Unity 2017 場景光照烘焙信息過大……
我們將從日常技術交流中精選若干個開發相關的問題,建議閱讀時間15分鐘,認真讀完必有收穫。如果您有任何獨到的見解或者發現也歡迎聯繫我們,一起探討。
渲染
Q:我們的版本是Unity 2017,我們的美術烘焙出來的場景光照貼圖中,還帶了一個Lighting Data Asset這樣的文件,查詢相關資料顯示是包含了貼圖採樣信息等內容,按理說應該不會很大,可是現在項目里,這個文件達到了90MB一個場景很不正常。有人建議是把這個東西刪掉索引,不要打包。但是不知道這樣場景里的燈光貼圖還可以正常載入么?
A:建議題主可以看下文檔(https://docs.unity3d.com/Manual/LightmapSnapshot.html)里的兩條描述:
The asset is an Editor only construct so far, so you can』t access it in the player.
Currently, this file is a bit bloated as it contains data for multiple platforms - we will fix this. Also we are considering adding some compression for this data.
所以這90MB並不是全都打到包里去的,但裡面所保存的必要信息,打進包里後,具體有多大確實不好評估。一般來說,不開啟Precomputed GI的話,應該是不大的。「把這個東西刪掉索引」再打包的話,理論上Lightmap是會丟失的,得自己來動態載入和設置的。
該問題來自UWA問答社區,如您對該問題仍有疑問,可以轉至社區進行進一步交流。
https://answer.uwa4d.com/question/5a4f4367e041ef3c50c9ce64
內存管理
Q:真機測試環境下,在Profiler里查看內存使用情況,發現ShaderLab一項佔用內存很大,裡面主要是什麼?減少了Shader的變體後這部分內存有所下降,沒有使用Unity內置的Standard Shader。能否在不減少變體的情況下,減少這一部分佔用的內存?
另外,也發現同一項下的Objects佔用也很大,這是為什麼呢?
A:ShaderLab是項目在編譯Shader時產生的解析Buffer,其內存增長的特點就是Key words越多、變體越多,其內存佔用越大。目前,還沒有看到有不減少變體的情況下,可以減少該內存佔用的有效方法。如後續有找到,我們也會來及時更新這塊的內容。
至於Objects,建議搜索題庫,來查找之前相應的回答,比如這裡:
https://answer.uwa4d.com/search/objects
該問題來自UWA問答社區,如您對該問題仍有疑問,可以轉至社區進行進一步交流。
https://answer.uwa4d.com/question/5a4d8df42b7c402cc97294a3
動畫
Q:我們導入anim後綴的文件進行精度處理後某些信息丟失,如下圖所示:
修改的代碼如下:
修改前後的例子已經上傳到UWA問答社區。
A:丟失的信息是mEditorcurves, 該欄位只對anim在Editor中的內存佔用產生影響,對其在真機運行時的動畫效果與內存佔用並無影響。因此該欄位列表為空與否不會影響其在真機中的表現,可以用提問中的方式對其進行精度處理。如果想保留該欄位(雖然對真機內存無影響),可以通過文本處理的方法對anim文件進行精度處理,處理時跳過mEdtorcurves欄位。
該問題來自UWA問答社區,如您對該問題仍有疑問,可以轉至社區進行進一步交流。
https://answer.uwa4d.com/question/5a4254efebf015c04f5ed54e
資源管理
Q:場景使用Static Batch似乎會將所有用到的模型合併成一個大的網格並保存成文件,導致場景的AssetBundle很大,而且會導致場景的模型文件和場景文件資源似乎有重複。
如果場景不標記Static Batch,而是載入完成之後動態去設置Static Batch,尺寸會減少嗎?
A:是的,標記Static Batch會生成額外的Combined Mesh數據,這個往往佔據較大的包體和內存。不標記Static Batch,載入之後通過StaticBatchingUtility API來動態設置也是一個很好的選擇,唯一的不同是拿場景載入的時間來換空間。
該問題來自UWA問答社區,如您對該問題仍有疑問,可以轉至社區進行進一步交流。
https://answer.uwa4d.com/question/5a40eafdb319bedd3bec6d91
資源管理
Q:請問在Unity 5.6.4中解決了foreach導致的堆內存分配問題了嗎?
A:在Unity 5.6中,foreach確實不產生堆內存分配了,另外感謝王亮的補充,在Unity 5.5.5p1中也已經修復了該問題。
該問題來自UWA問答社區,如您對該問題仍有疑問,可以轉至社區進行進一步交流。
https://answer.uwa4d.com/question/5a4c575c2adbd673cb602a33
※【厚積薄發】技術分享連載(九十一)| UI 公用圖集合併| UGUI圖集無法卸載|優化Profiler中Others的耗時...
TAG:侑虎科技 |