天天看點

unity 解決Internal compiler error問題思路

引用自:https://blog.csdn.net/wangxiong_zh/article/details/73752549

問題:

Unity無法Play

提示 Internal Compiler Error

但沒有執行目标檔案

過程:

代碼多次debug沒有錯誤。

經過移除檔案的排除法,注意到引起問題的是從mono中放入到Plugins裡的幾個dll檔案所緻

這些dll需要.net2.0支援,而Build中預設的不是Windows平台而是webPlayer。

懷疑Unity認為目标平台不支援,是以報出編碼器錯誤。

解決:

針對Windows平台Build一次即可

思考:

在Unity中,對于沒有明确指向檔案的報錯,應該優先考慮引用和設定的環節是否有問題

但是另一方面而言,Unity的Mono Branch更方面的不完善确實會造成很大困擾

引用:

1. 有人提到是因為路徑中含有中文字元所緻,但本例不是建立工程

2. 有人提到是文本結尾符所緻:Windows(如VS生成的cs檔案)下結尾符是CR|LF,Mac下是CR,Unix系是LF(Unity預設)。但本例不存在這個問題。

如果出現此問題,可以先用Notepad++等工具打開cs腳本,然後“視圖-現實符号-顯示行尾符”确認是否有這個問題。

如果确實存在這個問題,可以用mono的自行轉換,也可以用VS打開目标cs檔案,然後“檔案-進階儲存選項”中可以選擇行尾符風格,最後儲存即可。

—————————————————————————————————————————————————————————————————————————————————————————————————————————————

其實,我沒有用上面的辦法解決問題,但上面确實是個解決此問題的思路。我碰到Internal compiler error. 是在unity4.6中。出錯的具體問題都指向以前報Warning的一些小問題:比如某個變亮聲明後沒有被使用之類(其實使用了)。我先想到的是:1. 是不是unity報警告和報錯設定被誤操作調整了,導緻warning變為error。後面查找分析發現貌似沒有這樣的設定。 2. Revert恢複所有改動操作,沒用。 3. 換目錄,将Asset移動到另一個目錄,重新打開項目。 4. 重新啟動軟體。 5. 重新開機電腦。 6. 重裝unity  。

對,所有這些操作我都整了一遍,甚至還有很多網上其他解決辦法。結果,都沒用。看似一個簡單的問題,這麼多辦法都沒用,我想肯定是哪裡有點問題。冷靜下來想起:出現這個問題,是我引入了unity高版本的一個prefab之後才出現。但報錯的不是這個prefab。對,問題肯定是這樣。

但解決思路就有點騷操作了。我以前不是沒删除過這些新資源,新代碼。都沒用。

是以我重新checkout了這個項目,另起新目錄,重新打開。問題,居然,解決了!

看到沒,其實,問題很簡單。

總結下: 1. 高版本導入的資源會對低版本unity造成未知錯誤。 2. Revert沒用,重新開機沒用。 3. 直接重新checkout,重新建立項目。

ps:代碼資源及時備份,上傳是個好習慣。

——————————————————————————————————————————————————————

實際原因是unity4.6不支援在IEnumerator中寫try catch。

繼續閱讀