Unity專案優化需要注意的問題

2021-10-06 09:38:24 字數 1930 閱讀 6100

在使用unity開發遊戲的過程中,借助profiler來分析記憶體使用狀況是至關重要的,但許多開發者可能還對profiler中各項資料表示的含義不甚明確,為此下面將針對profiler記憶體分析相關的問題及解答,希望對大家有用。

2.gpu usage

a. device.present: 

device.presentframe的耗時顯示,該選項出現在發布版本中. 

b. graphics.presentandsync: 

gpu上的顯示和垂直同步耗時.該選項出現在發布版本中. 

c. mesh.drawvbo: 

gpu中關於mesh的vertex buffer object的渲染耗時. 

d. shader.parse: 

資源加入後引擎對shader的解析過程. 

e. shader.creategpuprogram: 

根據當前裝置支援的圖形庫來建立gpu工程.

3. memory profiler

a. used total: 

當前幀的unity記憶體、mono記憶體、gfxdriver記憶體、profiler記憶體的總和. 

b. reserved total: 

系統在當前幀的申請記憶體. 

c. total system memory usage: 

當前幀的虛擬記憶體使用量.(通常是我們當前使用記憶體的1.5~3倍) 

d. gameobjects in scene: 

當前幀場景中的gameobject數量. 

e. total objects in scene: 

當前幀場景中的object數量(除gameobject外,還有component等). 

f. total object count: 

object資料 asset數量.

4. detail memoryprofiler

a. assets: 

texture2d:記錄當前幀記憶體中所使用的紋理資源情況,包括各種gameobject的紋理、天空盒紋理以及場景中所用的lightmap資源. 

b. scene memory: 

記錄當前場景中各個方面的記憶體占用情況,包括gameobject、所用資源、各種元件以及gamemanager等(天般情況通過assetbundle載入的不會顯示在這裡). 

a. other: 

managedheap.usesize:**在執行時造成的堆記憶體分配,表示上次gc到目前為止所分配的堆記憶體量. 

serializedfile(3): 

webstream:這個是由www來進行載入的記憶體占用. 

system.executableanddlls:不同平台和不同硬體得到的值會不一樣。

5. 優化重點

6. 專案中可能遇到的問題

a. device.present: 

1.gpu的presentdevice確實非常耗時,一般出現在使用了非常複雜的shader. 

2.gpu執行的非常快,而由於vsync的原因,使得它需要等待較長的時間. 

3.同樣是vsync的原因,但其他執行緒非常耗時,所以導致該等待時間很長,比如:過量assetbundle載入時容易出現該問題. 

4.shader.creategpuprogram:shader在runtime階段(非預載入)會出現卡頓(華為k3v2晶元). 

b. stacktraceutility.postprocessstacktrace()和stacktraceutility.extractstacktrace(): 

1.一般是由debug.log或類似api造成. 

2.遊戲發布後需將debug api進行遮蔽.

Object c block需要注意的幾點問題

摘自 date 2015 12 4 1.block定義 1 說明 a.block是oc中的一種資料型別,在ios開發中被廣泛使用 b.是block的特有標記 c.block的實現 包含在 之間 d.大多情況下,以內聯inline函式的方式被定義和使用 e.block與c語言的函式指標有些相似,但使用...

專案失敗需要注意問題

1.建立表的時候每個表新增建立時間 create time 和修改時間update create,方便排序 2.如果頁面沒有使用datagrid等複雜元件就不要引入easyui和extjs這種js框架,而是使用jquery相關外掛程式 3.設計資料庫的時候盡量不要和其他團隊共用,前期說修改沒問題,到...

使用iterat移除list需要注意的問題

迭代用完後在使用之前需要重新生成,指標變了 iteratorchannelcompositionsiterator compositions.iterator 兩次remove同一次的遍歷報錯 iterator是物件引用迭代器中的效果會反應到引用物件 iteratorchannelcompositi...