今天遇到一個問題远舅,某個模型在unity里效果正常的(如圖1)痕钢,但是打包之后效果異常(如圖2)。異常的地方主要是流光效果任连,
圖1
圖2
首先經(jīng)過一番檢查和測試,排除了shader變體/材質球/預制體設置錯誤或者打包失敺蓖俊(美術修改效果后構建版本沒有如預期般重新打包)等原因二驰。
- 這個模型使用了第2套uv(嚴謹點說應該是另一套user自定義uv)來制作流光特效,然而并不是所有部位都有問題步势,僅個別模型部位出現(xiàn)問題背犯,故排除shader變體原因。
- 對材質球和預制體進行輕微修改重新打包漠魏,問題依然存在,故排除打包問題哪自。
- 為了在UI上展示更多細節(jié)禁熏,美術制作了兩套fbx模型,UI模型有問題胧华,而場景模型正常宙彪,兩者使用了相同的材質球,故排除材質球設置問題释漆。
而當我將UI模型使用的mesh改成場景模型對應的mesh時(即使用了場景fbx里的模型),則顯示正常示姿⊙钒剩或者我把使用第2套uv改為使用第1套uv制作流光特效,也可以正常顯示荧琼。于是原因更傾向于在模型身上。
如圖3所示是我們的UI模型命锄,包含所有部位,其中部分部位打包后顯示異常镐侯。由于所有部位都在一個模型里驶冒,意味著美術會持續(xù)地往里面加新部位,所以這個模型文件處于持續(xù)修改狀態(tài)崇猫。
圖3
最后該問題還是解決了需忿,原因在于美術忽略了我們制作模型的一個規(guī)則。注意到這個模型名字為model1.fbx
涕烧,而我們的規(guī)則是名字中含有"@"
符號的不單獨打包汗洒。如圖4所示,問題部位的.ab.manifest
顯示對model1.fbx
有依賴瞻凤。
圖4
而解決此問題的方法便是重命名
model1.fbx
為model1@xxx.fbx
溯香,打包后問題部位(現(xiàn)在已經(jīng)是正常部位了)已經(jīng)不在對新的model1@xxx.fbx
產(chǎn)生依賴浓恶,而顯示也一切正常包晰。圖5
至于深層次原因,猜測是fbx文件一直在修改勉痴,導致打包后去獲取mesh時可能產(chǎn)生了混亂树肃,比如獲取到的頂點錯了之類的,進而導致顯示異常。原理不甚了了斩祭,僅做記錄備忘乡话。