1.Unity3D經常莫名奇妙崩潰。
一般是由于空異常造成的,多多檢查自己的引用是否空指針。
2.編碼切換警告提示。
警告提示:Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces andcompiler errors. Many text editors can fix this using Convert LineEndings menu commands.
編碼格式問題,VS的話直接高級保存方案里面修改,一般我選的是UNICODE(UTF8代簽名)MACINTOSH(CR),WINDOW下的可以選WINDOWS的格式,兩邊都要用的話,推薦選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 requestedmethod.
估計是破解Unity3D造成的,該破解文件可能是不支持WIN7下的。
解決方法:換正版或換個破解文件。
5.平臺編譯錯誤或庫引用缺失
錯誤提示:error CS1061: Type `System.IO.FileInfo' does not containa definition for `Delete' and no extension method `Delete' of type`System.IO.FileInfo' could be found (are you missing a usingdirective or an assembly reference?)
出了這個錯誤一般有兩個原因了。
1.沒有引用相關的庫。
2.選錯編譯平臺。(BuildSetting里面的Platform)
錯誤提示:Could not startcompilationWin32Exception:ApplicationName=“XXXX\mono.exe”,……
解決方式:重裝UNITY3D。
6.內存資源加載錯誤問題
錯誤提示:Trying to reload asset from disk that is not stored ondisk
個人是在加載多個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 aparticular AssetBundle loaded at one time in your application. Whatthis means is that you can't retrieve an AssetBundle from a WWWobject if the same one has been loaded previously and has not beenunloaded. In practical terms it means that when you try to access apreviously loaded AssetBundle like this:
(BY:http://docs.unity3d.com/Documentation/Manual/keepingtrackofloadedassetbundles.html)
國外論壇的討論:
http://forum.unity3d.com/threads/49298-Trying-to-reload-asset-from-disk-that-is-not-stored-on-disk
貌似老外也沒完全確切搞定這個。
錯誤提示:Deletingpersistent object without writing it first
不論如何你都不應該直接修改一個從assetbundle加載進來的最初數據,一般都要先實例化出來再對其修改。但是引用的東西(例如mesh),這些也不能修改它。若要修改的話,則先復制一份出來。
復制一份模型出來重新復制,以免直接修改被引用的鏡像模型。如下:
1 | Mesh temp = Mesh.Instantiate(smr.sharedMesh) as Mesh; |
2 | |
3 | myMesh.sharedMesh = temp; |
7.時間錯誤、NaN錯誤
錯誤提示:transform.position assign attempt for 'XXX' is notvalid。Input rotation is {NaN, NaN, NaN, NaN}.
一般是由于游戲暫停將timescale設為0引起的,需要尋找相應用了Time.deltTime等參數的函數修改。否則會導致計算出錯報空異常。
詳細解決看另一篇文章:關于NaN(Not a Number)的問題http://blog.sina.com.cn/s/blog_5b6cb9500101cd9e.html
8.動畫錯誤
這個錯誤是4.0新引進動畫系統才出現的。
錯誤提示:Mecanim: BindSkeleton: Cannot findtransform“objectname”
解決方式:
1.找到該對應transform“objectname”的模型,直接在檢索面板搜索所有相應名字,能容易找到。
2.將模型的面板的Rig部分的動畫AnimationType改為none
9.坐標系向量計算的錯誤提示
錯誤提示:Look rotation viewing vector is zero
解決方式:一般是由于攝像機的旋轉角度造成的。也可能是向量的計算多余而系統提示。我們項目中是強制攝像機90度的時候出現,改成89.9度就沒問題了。
具體還有的參考Unity3D官方論壇:
http://answers.unity3d.com/questions/397425/look-rotation-viewing-vector-is-zero-error.html
若沒找到解決方法再搜索下。
10.關于AssetServer
錯誤:明明上傳了所有修改,但是別人的機子卻沒有下載帶最新代碼。
原因:Merge完代碼之后,操作了ignore serverchange,UNITY默認是以你本機子的為準,若此代碼沒有再次修改,則AssetServer不認為這個東西被修改過,沒有上傳那代碼。
解決方式:打個空格重新保存一下該代碼。
11.關于數據格式的錯誤
錯誤提示:IllegalJSON sequence
解決方式:http://forum.unity3d.com/threads/143168-JsonFX-WTF-Illegal-JSON-sequence
12.導出WINDOS平臺下的項目運行不成功
錯誤提示:沒有找到相應assetbundle的路徑
解決方式:因為用了assetbundle加載,而游戲在有中文路徑下,assetbundle的路徑不能有中文。換個無中文的目錄即可。從根源上能解決的方案現在暫時沒有。
13.導入資源出錯
錯誤提示:Error while importing package :Couldn't decompresspackage
解決方式:導入資源出錯,大部分都是中文路徑惹的禍。將資源換到無中文路徑試試。如C/D盤根目錄。