开始研究Google Cardboard SDK,下载了一份gvr-unity-sdk,用Unity打开里面的Samples: CastleDefense,导出XCode项目在iPhone上面运行,出现如下错误:
You‘ve implemented -[<UIApplicationDelegate> application:didReceiveRemoteNotification:fetchCompletionHandler:], but you still need to add "remote-notification" to the list of your supported UIBackgroundModes in your Info.plist.
修改完上述错误再运行又出现如下错误:
The referenced script on this Behaviour (Game Object ‘ExplosionMobile‘) is missing!
返回Untiy项目,看到Assets/Game/Prefabs/Cannon Ball这个Prefab里面的ExplosionMobile下面挂的脚本丢了
在检查了Edit->Project Settings->Editor里面的Version Control设置为Visual Meta Files,Asset Serialization设置为Force Text(如果你的项目设置不是这样,需要修改成这样).
在项目文件目录下选中 Cannon Ball.prefab 这个文件,用文本编辑器打开,并搜索ExplosionMobile:
从上图可以看到m_Name: ExplosionMobile这一行上面有m_Component的数据,- 4:为Transform,- 114:为Script,即为丢失的Script,复制其后面的fileID数值11463042,并在该文件中搜索11463042,除去当前这个位置,另外一个位置,就是该Script的数据信息:
看--- !u!114 &11463042这个模块下的数据,m_Script这一行里面有一个guid,数值039587c051912eb4ead9e58344c5f3ce即为丢失的Script的guid,该guid是Unity自动生成并保存在.meta文件里面的。
在本地文件系统中搜索039587c051912eb4ead9e58344c5f3ce,结果如下:
往下拉寻找*.cs.meta,发现如下:
点击其中一个ParticleSystemMultiplier.cs.meta,在上层文件夹中显示出来,发现是Unity的Standard Assets: ParticleSystems里面的脚本:
在项目中导入ParticleSystems Package后,丢失的代码即刻恢复了:
到此,丢失的Script找到了。
Missing Prefab也是类似的操作,用文本编辑器打开丢失Prefab的*.unity这个场景文件,然后搜索Missing Prefab,通过fileID在文件中查到Prefab的数据信息,分析该Prefab数据中包含哪些Component,并手动重建一个,丢失的资源文件,则根据guid在项目目录下查找。
本文为原创,如果转载请注明出处