1、硬件支持優化
(1)平臺設置優化
減少FPS,在ProjectSetting-> Quality中的
VSync Count 參數會影響妳的FPS,EveryVBlank相當於FPS=60,EverySecondVBlank = 30;
這兩種情況都不符合遊戲的FPS的話,我們需要手動調整FPS,首先關閉垂直同步這個功能,然後在代碼的Awake方法裏手動設置
FPS(Application.targetFrameRate = 45;)
降低FPS的好處:
1)省電,減少手機發熱的情況;
2)能都穩定遊戲FPS,減少出現卡頓的情況。
當我們設置了FPS後,再調整下Fixed timestep這個參數,
這個參數在ProjectSetting->Time中,目的是減少物理計算的次數,來提高遊戲性能。
(2)文件格式優化
1)Android?更新不透明貼圖的壓縮格式為ETC 4bit,因為Android市場的手機中的GPU有多種,每家的GPU支持不同的壓縮格式,但他們都兼容ETC格式。iOS上盡量使用PVRTC。
2)對於透明貼圖,我們只能選擇RGBA 16bit 或者RGBA 32bit。
3)圖集大小最好不要高於1024,否則遊戲安裝之後、低端機直接崩潰、原因是手機系統版本低於2.2、超過1000的圖集無法讀取、導致。2.2 以上沒有遇見這個情況。註意手機的RAM 與 ROM、小於 512M的手機、直接放棄機型適配。
(3)Unity功能使用優化建議
Unity屏幕特效、動態的pixel光照計算(如法線)、實時的陰影,能找到替代方案就找替代方案。
2、渲染優化
(1)模型設置優化
1)合並材質球unity 3d中每倒入壹次模型就多壹個材質球,可我的這些模型都是***用壹張貼圖的就想***用壹個材質球,所以每次都要刪除再附上,很麻煩。怎麽才能合並這些材質球?采用TexturePacking吧
1、遍歷gameobject,取出material,並根據shader來將material分類
2、調用Unity自帶的PackTextures函數來合並每個shader分類中的material所對應的textures(PackTextures函數有缺陷,不過可以將就用)
3、根據合並的大的texture來更新原有模型的texture、material已經uv坐標值。
需要註意的是:需要合並的紋理應該是物體在場景中距離相近的,如果物體在場景中的距離較遠,
則不建議合並紋理,因為這樣做很有可能非但起不到優化的作用,反而降低了運行效率。?
2)mesh合並?分為2種方式合並
1.自帶的合並必須勾選靜態。
? 2. 腳本合並
優化建議(1)角色材質數2-3個 最多不要超過5個。可以采取2+3模式,2為主 3位輔助。?(2)骨骼數量最好控制在30
?(3)面片數量根據實際需求做壹定刪減。比較低的控制在2000以下。
(4)靜態物件不需要添加Animation Component
(5)UV值範圍盡量不要超過(0, 1)區間
(6)地形長寬均盡量小於257。這是因為地形太大,會造成大量頂點數據,給妳的內存帶寬造成壹定的影響,在目前的ios設備中,內存帶寬是非常有限的,需要盡量節省。同時,如果用Unity自帶的地形,壹定也要使用Occlusion Culling,因為Unity的刷地形工具雖然方便,但卻是framekiller,刷過之後,妳會發現drawcall增加的非常多。混合紋理數量不要超過4。地形的混合操作是很耗時的,應該盡量避免。能合並的紋理盡量合並。(2)渲染批次優化
3、代碼編程優化