1. 程式人生 > >Unity的吐血巨坑之處 --- 釋出版本和編輯器的紋理顯示不一致

Unity的吐血巨坑之處 --- 釋出版本和編輯器的紋理顯示不一致

快取。

編輯器的快取和正式釋出的時候快取是一樣的。這本來看起來沒什麼大礙,但是有經驗的都知道編輯器裡的紋理效果和實際釋出的時候是不一樣的,雖然這個我才剛剛知道。但是因為被快取後,你在自己的機器上面看效果是正確的,但是放到別的機器上看就不對了,於是會陷入一個坑而找不到原因所在。雖然本身編輯器裡面的效果和釋出的時候不一樣本身(有可能是外掛導致)就是坑。但是有個方法可以在本機已經快取紋理的情況下看到最終效果,那就是build and run

實際上我在build and run的時候已經看到效果不對了,但是沒怎麼在意,自以為只要最終執行沒問題就行了,實際上也是出於害怕,因為如果是外掛本身的問題,那麼實際上是無解的。

這裡說說具體遇到的情況和解決方法,我使用的2Dtoolkit和NGUI來做2D開發,但是釋出到別的電腦之後遊戲2D紋理顯示不正常,變得非常模糊,起初還以為是解析度導致,後來換了臺一樣解析度的機器,還是一樣。幸好這臺機子執行過工程,才讓我想到可能的原因 --- 快取。因為那臺機子原來執行的時候是正常的,只因為重啟後就執行不正常了,只能說明原來正常的顯示是因為使用了編輯器正常顯示的快取。可是就算知道這個又怎麼解決呢?仍然找不到解決的辦法。

無奈之下,嘗試把一張2dtoolkit的執行時Sprite換成Unity自帶的Sprite看看,結果顯示正確了。難道要全部換成Unity自帶的精靈?那幾乎要重寫了!用過2Dtoolkit的都知道那個玩意和Unity自帶精靈差別太大了。如果是這樣難道是外掛的問題嗎,但是2dtoolkit和NGUI同時出現這樣的問題顯得不可思議,而NGUI可以說是全線崩潰,所有紋理顯示都是模糊的。於是外掛問題的可能性很小,肯定是哪裡設定錯了。

經過各種嘗試後最終發現,如果把NGUI的紋理設定成Unity自帶的Sprite屬性就顯示正常了,終於找到突破口。這時候我才發現,2dtoolkit能正常顯示的紋理,和不正常的對比,就是紋理屬性的區別,2dtoolkit預設是用Advance加一些設定,實際效果應該和Unity的Sprite是一樣的。

這讓我想到最初用Unity自帶的GUI的時候,渲染2D紋理需要改紋理屬性,而Unity預設的紋理屬性是Texture,我相信外掛應該都是改過屬性的,可能是因為SVN傳資源的時候,或者移動資源目錄的時候導致部分紋理資源的屬性被重置了。

但是即使在這樣錯誤的設定下面,編輯器裡的效果依然一直是正確的,這或許只能回頭說還是外掛的問題嗎?也許是外掛的ExecuteInEditor模式導致的,雖然我不知道怎麼解釋無論紋理設定對不對,每次開啟都是正確的。

build and run才能看到最正確的效果,總之記住這個了。但是正是因為開發的東西build and run 沒法看到完整流程才沒有使用它,所以說實際上並不是非常好用。