众所周知,Unity的Prefab、脚本、或者是其他资源都会带有一个相应的.meta文件,这个文件记录的ID就是Unity引擎用来管理文件之前的关联的ID。同样的,无论是场景文件.unity,预设文件.prefab等,都是可以直接通过文本打开,里面记录的就是脚本的引用,上面所指向的ID就是相应脚本或者资源的meta的ID。如图:
在迁移场景、预设等资源过去另外的工程时,不能直接将NGUI的脚本及脚本的meta也迁移过去,这样会影响到工程中原本引用了这些脚本的资源脚本丢失,当然,如果Pafab比较少时,可以直接手动重新拖脚本也能解决,现在就是讨论导入大量的Prefab时,不想重新再拖脚本的解决方案。原理就是直接手动去修改场景或Pferab中记录的guid,这个guid就是脚本的meta上所对应的guid。假如在原工程中,UILabel的Meta文件中记录的guid是18c9b07b25ac7b24ba572c49ed6a72bf,那么需要在新工程中查看UILabel此时的guid,直接将18c9b07b25ac7b24ba572c49ed6a72bf替换掉,引擎就会自动识别到脚本,会重新加载,就能自动挂上脚本了。其他的脚本引用丢失,原理也是一样。
有些人会觉得只是拉一下脚本,哪有这么多麻烦事,还要手动去修改guid,万一改错了,会引起更多的错误。但是有些UI布局,涉及很多UI资源的引用、定位,如果重新拉脚本,又要重新去调这些参数,也是很费时费力的。因些批量是全局搜索修改这些guid,也是个捷径。紧作记录!
网友评论