Q1:請問音頻中的 Quality 什麼意思?一般設定為多少合适?我拖進去一首歌曲,試了一下 在0 和 100 的情況下差別不大,但是生成的音頻檔案大小差别很大。

Quality 表示在壓縮音頻時的失真程度(實際上可以認為是壓縮算法的一個參數),該值越大,壓縮後的檔案越大,但音質保留的越好。而對于其失真的程度是視音頻資料以及内部的壓縮算法而定的,确實會有差別不大的情況。該值的設定原則就是,在音質失真可接受的情況下,越小越好。
Q2: 我做的預設用到了這個字型
我将這個預設打成AssetBundle包,通過Profiler分析時發現占了兩份記憶體。
下面這個SIMHEI應該是那個TTF的,為什麼會占兩份記憶體呢?
通常TTF檔案會包含一個字型的多個字型,如可能包含正常字型、加粗字型、斜體字型等。而在Unity中會将其分為不同的Font資源,且他們之間會互相依賴。是以,如果項目中确實需要加粗字型的話,記憶體裡出現兩個Font是正常的,但如果實際上不需要加粗,那麼可以嘗試尋找一個不包含加粗字型的字型檔案來替換該TTF檔案。
Q3: 我在Profiler中看到GameObject.Deactivate耗時較大,請問該如何優化?
實際上GameObject.Activate/Deactivate本身通常不會産生很高的開銷,主要都是由其上或其子節點上的元件的OnEnable/OnDisable操作引起,比如UI相關的元件在OnEnable和OnDisable中都會有較多的操作,是以較複雜的UI界面的GameObject.Activate/Deactivate會有很高的開銷。是以,針對這一問題,如果是由自定義的腳本造成,那麼就需要考慮優化OnEnable/OnDisable的邏輯;如果是UI,那麼可以對頻繁切換激活狀态的UI采用平移出螢幕、修改Culling Layer等方式來替換。
Q4: 我有一個特效依賴了兩個FBX。我把這兩個FBX的這個勾選去掉,Editor運作正常。
否則就會當機,請問這是什麼原因?
将FBX上的Read/Write Enabled關閉後,記憶體中便不再儲存其Mesh的副本(隻存在顯存中),是以其屬性就不可再被通路和修改。而粒子系統通常需要動态地修改其粒子的頂點屬性。是以,理論上來說,供粒子系統使用的Mesh是需要開啟Read/Write Enabled的,而在Editor下Mesh和Texture都是強制開啟的,是以在真機上就會出現問題。
Q5: 我用内建的Shader渲染場景,深度圖裡有内容。而用自己的Shader,取到的深度圖什麼都沒有,都是1,什麼原因導緻的呢?我已經打開ZWrite了。
在Unity4.x中,Unity的_CameraDepthTexture 的生成,會根據Rendering Path的選擇和裝置的不同使用不同的方法實作,一種是直接從depth buffer擷取,另一種是添加額外的Pass來渲染到紋理。目前在移動裝置上主要是通過後者實作,而後者的實作借助了Shader Replacement的機制(批量替換為簡單的Shader,并将深度渲染到紋理中)。
是以,在使用自定義的Shader時,就需要正确地設定RenderType的Tag(所有内置Shader都是設定好的),進而使得Shader Replacement正确地執行。具體可見文檔: http://docs.unity3d.com/Manual/SL-ShaderReplacement.html
而在Unity5.x中,則不再通過Shader Replacement來實作了,是以需要添加一個包含了"LightMode"="ShadowCaster"的Tags的額外Pass,用來寫入深度值。
原文出處:侑虎科技
轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。