開始研究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在項目目錄下查找。
本文為原創,如果轉載請注明出處