1. 程式人生 > >[轉][Unity3D]引擎崩潰、異常、警告、BUG與提示總結及解決方法

[轉][Unity3D]引擎崩潰、異常、警告、BUG與提示總結及解決方法

1.U3D經常莫名奇妙崩潰。 一般是由於空異常造成的,多多檢查自己的引用是否空指標。 2.編碼切換警告提示。 警告提示:Some are Mac OS X (UNIX) and some are Windows. This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings menu commands. 編碼格式問題,VS的話直接高階儲存方案裡面修改,一般我選的是UNICODE(UTF8代簽名)MACINTOSH(CR),WINDOW下的可以選WINDOWS的格式,兩邊都要用的話,推薦選CR。 BUG:IOS下,遊戲中的中文顯示亂碼。 解決方式:同上,修改改內碼表的編碼。UNICODE(UTF8代簽名)MACINTOSH(CR) 3.中文介面解決問題。
monodevelop中文顯示解決方法: 中文Mac系統下MonoDevelop亂碼解決: 4.安裝空專案報錯 不知道怎麼地,在IOS試過一次空專案也在錯誤提示。大概是說什麼“找不到需要的方法”。 重灌一下就好了,估計是UNITY檔案損壞或者安裝不完全出錯了。重灌吧。 錯誤提示:MissingMethodException: Cannot find the requested method. 估計是破解U3D造成的,該破解檔案可能是不支援WIN7下的…… 解決方法: 1、換正版。 2、換個破解檔案。 5.平臺編譯錯誤或庫引用缺失 錯誤提示:error CS1061: Type `System.IO.FileInfo' does not contain a definition for `Delete' and no extension method `Delete' of type `System.IO.FileInfo' could be found (are you missing a using directive or an assembly reference?) 出了這個錯誤一般有兩個原因了。 1.沒有引用相關的庫。 2.選錯編譯平臺。(BuildSetting裡面的Platform) 錯誤提示:Could not start compilationWin32Exception:ApplicationName="XXXX\mono.exe",……
[Unity3D]引擎崩潰、異常、警告、BUG與提示總結及解決方法


解決方式:重灌UNITY3D。 6.記憶體資源載入錯誤問題 錯誤提示:Trying to reload asset from disk that is not stored on disk 個人是在載入多個ASSETBUNDLE時,用了釋放映象之後,發生了下面的BUG。 這個警告它並沒有對遊戲流程有任何影響,不過一直跳出來很煩人。我們專案中是因為用Dictionary刪除的時候沒有刪除完整導致的。 解決方案參考:http://blog.sina.com.cn/s/blog_5b6cb95001019ipi.html 個人認為比較大可能是下面的原因: 還沒釋放完映象再次載入就出BUG了。將所有ASSETBUNDLE載入完後再同一釋放,這樣就沒問題了。 Unity will only allow you to have a single instance of a particular AssetBundle loaded at one time in your application. What this means is that you can't retrieve an AssetBundle from a WWW object if the same one has been loaded previously and has not been unloaded. In practical terms it means that when you try to access a previously loaded AssetBundle like this: (BY :http://docs.unity3d.com/Documentation/Manual/keepingtrackofloadedassetbundles.html) 查閱了一下,貌似還有別的問題能導致這提示。下面是相關可以繼續深入的資料,可以幫助大家理解U3D的載入和記憶體管理: 百度搜一下下面兩篇文章,應該是出自聖典論壇: 1.【全面理解Unity載入和記憶體管理】 2.【全面理解Unity載入和記憶體管理機制之二:進一步深入和細節】 國外論壇的討論: 貌似老外也沒完全確切搞定這個。 錯誤提示:
Deleting persistent object without writing it first 不論如何你都不應該直接修改一個從assetbundle載入進來的最初資料,一般都要先例項化出來再對其修改。但是引用的東西(例如mesh),這些也不能修改它。若要修改的話,則先複製一份出來。 //複製一份模型出來重新複製,以免直接修改被引用的映象模型。如下: Mesh temp = Mesh.Instantiate(smr.sharedMesh) as Mesh; myMesh.sharedMesh = temp; 7.時間錯誤、NaN錯誤 錯誤提示:transform.position assign attempt for 'XXX' is not valid。Input rotation is {NaN, NaN, NaN, NaN}. 一般是由於遊戲暫停將timescale設為0引起的,需要尋找相應用了Time.deltTime等引數的函式修改。否則會導致計算出錯報空異常。 詳細解決看另一篇文章: 關於NaN(Not a Number)的問題  8.動畫錯誤 這個錯誤是4.0新引進動畫系統才出現的。 錯誤提示:Mecanim: BindSkeleton: Cannot find transform"objectname" 解決方式: 1.找到該對應transform"objectname"的模型,直接在檢索麵板搜尋所有相應名字,能容易找到。 2.將模型的面板的Rig部分的動畫AnimationType改為none 9.座標系向量計算的錯誤提示 錯誤提示:Look rotation viewing vector is zero 解決方式:一般是由於攝像機的旋轉角度造成的。也可能是向量的計算多餘而系統提示。我們專案中是強制攝像機90度的時候出現,改成89.9度就沒問題了。 具體還有的參考U3D官方論壇: 若沒找到解決方法再搜尋下。 10.關於AssetServer 錯誤:明明上傳了所有修改,但是別人的機子卻沒有下載帶最新程式碼。 原因:Merge完程式碼之後,操作了ignore server change,UNITY預設是以你本機子的為準,若此程式碼沒有再次修改,則AssetServer不認為這個東西被修改過,沒有上傳那程式碼。 解決方式:打個空格重新儲存一下該程式碼。 11.關於資料格式的錯誤 錯誤提示:Illegal JSON sequence 12.匯出WINDOS平臺下的專案執行不成功 錯誤提示:沒有找到相應assetbundle的路徑 解決方式:因為用了assetbundle載入,而遊戲在有中文路徑下,assetbundle的路徑不能有中文。換個無中文的目錄即可。從根源上能解決的方案現在暫時沒有。 13.匯入資源出錯 錯誤提示:Error while importing package :Couldn't decompress package 解決方式:匯入資源出錯,大部分都是中文路徑惹的禍。將資源換到無中文路徑試試。如C/D盤根目錄。