此貼會持續更新,都是項目中常會遇到的問題,總結成貼,提醒本身和方便往後檢查,也能幫到有須要的同窗。
若各位有啥好BUG好異常好警告好崩潰能夠分享的話,請多多指教。xuzhiping7#qq.com。
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中文顯示解決方法:
http://www.cocoachina.com/bbs/read.php?tid-78563.html
中文Mac系統下MonoDevelop亂碼解決:
http://blog.csdn.net/ssihc0/article/details/6796118
4.安裝空項目報錯
不知道怎麼地,在IOS試過一次空項目也在錯誤提示。大概是說什麼「找不到須要的方法」。
重裝一下就行了,估計是UNITY文件損壞或者安裝不徹底出錯了。重裝吧。
錯誤提示:MissingMethodException: Cannot find the requested method.
估計是破解U3D形成的,該破解文件多是不支持WIN7下的……
解決方法:
一、換正版。
二、換個破解文件。
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。
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加載和內存管理機制之二:進一步深刻和細節】
國外論壇的討論:
http://forum.unity3d.com/threads/49298-Trying-to-reload-asset-from-disk-that-is-not-stored-on-disk
貌似老外也沒徹底確切搞定這個。
錯誤提示: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盤根目錄。