天天看點

技術分享連載(四十二)

Q:請教一下,大家把UI做Alpha分離以後,會把分離前的圖删掉嗎?我這邊把分離前的圖删掉了,但是美術反映他們無法使用分離後的圖了,因為在預覽視窗看不了圖。但是我又不想讓他們用原來的圖,否則還要花精力去維護。大家都是怎麼處理的呢?

建議将原圖保留(但不與任何資源産生依賴,以免打入釋出包中),同時提供給美術一個一鍵更新的工具,如PSD For UGUI,就能夠自動化地處理Alpha的拆分和圖檔的替換,進而在減少程式的工作量的同時,保證美術的快速疊代。但具體的目錄安排、替換規則等,則需要根據項目自己的需求來定。

Q:在加載場景依賴的所有AssetBundle 後調用LoadLevelAsync,在LoadLevelAsync調用完成後, 對所有的AssetBundle調用unload(false),不知這樣是否可行。主要想減少Webstream占有的記憶體。 現在有個問題,場景中的特效,在幾次進入視野後會丢圖。 場景景物是正确的,可能是什麼原因導緻的呢?

這種方式是可行的,不過需要注意的是,場景加載後使用Unload解除安裝的AssetBundle是否以後還會被其他加載的資源所依賴,如有,則不建議進行解除安裝,否則會出現後續資源丢失的情況。場景中的特效紋理丢失,極有可能屬于這種情況。建議研發團隊首先判斷紋理特效的資源均在哪些AssetBundle中,然後試驗在這些AssetBundle不解除安裝的情況下,多次切換場景,看其特效紋理是否還會丢失,進而來判斷該問題是否由AssetBundle的解除安裝所導緻的。

Q:公共AssetBundle太大會不會影響更新包的大小?這個公共包不unload會不會導緻SerlizedFile太大,解除安裝的話會不會導緻公共AssetBundle的Asset備援?

公共AssetBundle的大小主要根據項目的内容和需求定。如果是擔心單個AssetBundle較大,那麼自行拆分即可。同時,根據Unity 5.3以後版本中新的LZ4壓縮特性,單個AB的大小對加載速度已經影響很小。記憶體中AB中加載得越多,理論上SerializedFile越大,這是天平的兩端,需要視自身情況而定。

Q:iOS下PVRTC格式對Alpha通道的支援不是很好,凡是有漸變的圖集,失真都很嚴重。是否把Alpha分離出來,圖檔的品質就會有所提升? 但是記憶體會比PVRTC大一倍。

PVRTC格式其實是有損壓縮格式,圖檔壓縮确實會出現一定的失真,且過渡範圍較大的區域也會出現“色階”問題,這其實是由其底層算法導緻的。将Alpha通道分離出來,從理論上來講并不會消除上述問題,但目前國内團隊中确實有進行如此操作且視覺效果有所改善,是以建議研發團隊不妨嘗試一下,來看問題紋理的視覺效果是否有所改善。

Q:請教一下,SerializedFile的解除安裝規則是什麼呢?會跟随這AssetBundle一起解除安裝麼?

技術分享連載(四十二)
絕大部分的SerializedFile均由AssetBundle産生,當AssetBundle被解除安裝時,與其對應的SerializedFile也将銷毀。

原文出處:侑虎科技

本文作者:admin

轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。

繼續閱讀