Unity 更新dll后的引用丢失问题

前段时间在项目工程中更新dll后,出现了预制体上脚本引用丢失的问题,今天抽空写一下解决方式。

1.查找dll的guid

  用文本编辑器打开dll的meta文件,找到guid,如下

fileFormatVersion: 2
guid: 60625ad5ac989284e9b1017660b59540 
PluginImporter:
  externalObjects: {}
  serializedVersion: 2
  iconMap: {}
  executionOrder: {}
  defineConstraints: []
  isPreloaded: 0
  isOverridable: 0
  isExplicitlyReferenced: 0
  validateReferences: 1
  platformData:
  - first:
      Any: 
    second:
      enabled: 1
      settings: {}
  - first:
      Editor: Editor
    second:
      enabled: 0
      settings:
        DefaultValueInitialized: true
  - first:
      Windows Store Apps: WindowsStoreApps
    second:
      enabled: 0
      settings:
        CPU: AnyCPU
  userData: 
  assetBundleName: 
  assetBundleVariant: 

2.找到预制体中引用的dll的guid

用文本编辑器打开prefab文件,你会看到所有挂在prefab上的脚本,找到m_Script后的guid,这个guid就是和dll对应的,如果guid错误,就会出现引用丢失的问题。fileID错误同样也会造成引用丢失,但是我没有碰到过这种问题,可以自己手动修改一下看看效果。

MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 921236486320777724}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 1041978173, guid: 60625ad5ac989284e9b1017660b59540, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  button: {fileID: 3945939871454791141}
--- !u!114 &7853910725242885901
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 921236486320777724}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: -792824715, guid: 60625ad5ac989284e9b1017660b59540, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  targetRect: {fileID: 0}
  isMovable: 1
  horizontal: 1
  vertical: 1
  limitByParent: 1
  padding:
    Top: 0
    Bottom: 0
    Left: 0
    Right: 0
--- !u!114 &9052176705620901265
MonoBehaviour:
  m_ObjectHideFlags: 0
  m_CorrespondingSourceObject: {fileID: 0}
  m_PrefabInstance: {fileID: 0}
  m_PrefabAsset: {fileID: 0}
  m_GameObject: {fileID: 921236486320777724}
  m_Enabled: 1
  m_EditorHideFlags: 0
  m_Script: {fileID: 549120591, guid: 60625ad5ac989284e9b1017660b59540, type: 3}
  m_Name: 
  m_EditorClassIdentifier: 
  draggable: {fileID: 7853910725242885901}

3.修改文件

  前面已经说过,造成脚本丢失的原因是guid没有对应上,所以不管是修改prefab的m_Script中的guid还是dll的meta文件中的guid,都可以解决这个问题,但是如果修改prefab,可能需要修改很多文件,所有只要原来dll的guid没有被占用,修改dll的meta就好了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值