開始研究Google Cardboard SDK,下載了一份gvr-unity-sdk,用Unity打開裏面的Samples: CastleDefense,導出XCode項目在iPhone上面運行,出現以下錯誤:app
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.編輯器
修改完上述錯誤再運行又出現以下錯誤:fetch
The referenced script on this Behaviour (Game Object 'ExplosionMobile') is missing!ui
返回Untiy項目,看到Assets/Game/Prefabs/Cannon Ball這個Prefab裏面的ExplosionMobile下面掛的腳本丟了this
在檢查了Edit->Project Settings->Editor裏面的Version Control設置爲Visual Meta Files,Asset Serialization設置爲Force Text(若是你的項目設置不是這樣,須要修改爲這樣).spa
在項目文件目錄下選中 Cannon Ball.prefab 這個文件,用文本編輯器打開,並搜索ExplosionMobile:orm
從上圖能夠看到m_Name: ExplosionMobile這一行上面有m_Component的數據,- 4:爲Transform,- 114:爲Script,即爲丟失的Script,複製其後面的fileID數值11463042,並在該文件中搜索11463042,除去當前這個位置,另一個位置,就是該Script的數據信息:blog
看--- !u!114 &11463042這個模塊下的數據,m_Script這一行裏面有一個guid,數值039587c051912eb4ead9e58344c5f3ce即爲丟失的Script的guid,該guid是Unity自動生成並保存在.meta文件裏面的。ip
在本地文件系統中搜索039587c051912eb4ead9e58344c5f3ce,結果以下:資源
往下拉尋找*.cs.meta,發現以下:
點擊其中一個ParticleSystemMultiplier.cs.meta,在上層文件夾中顯示出來,發現是Unity的Standard Assets: ParticleSystems裏面的腳本:
在項目中導入ParticleSystems Package後,丟失的代碼即刻恢復了:
到此,丟失的Script找到了。
Missing Prefab也是相似的操做,用文本編輯器打開丟失Prefab的*.unity這個場景文件,而後搜索Missing Prefab,經過fileID在文件中查到Prefab的數據信息,分析該Prefab數據中包含哪些Component,並手動重建一個,丟失的資源文件,則根據guid在項目目錄下查找。
本文爲原創,若是轉載請註明出處