Unity 遊戲幀率優化,設定解析度

2021-08-05 22:07:56 字數 1627 閱讀 9354

但是在某些大螢幕的手機上fps特別低,在一部4核心cup、4g記憶體的oppo手機上幀率不到23fps ,但是在小公尺2上執行反而特別流暢。

進過一系列的排查和試驗,某些標榜為高階機的手機,手機螢幕特別大,cup和記憶體引數還不錯,但是手機的gpu特別差(gpu引數一般不會標出來)。對於大屏的手機比如1080p的,每一幀要處理的畫素特別多,但是gpu效能不足以處理這麼多畫素,結果就造成了幀率特別的低的問題。

最直接的方法就是修改遊戲的渲染解析度,手機幀率低的時候,直接改低遊戲的渲染解析度,減少每一幀要處理的畫素數量。

unity 提供了乙個方法設定渲染解析度

screen.setresolution(designwidth,designheight,true);
這裡的做法是簡單的把渲染解析度設定成設計解析度。如果手機本身的解析度低於設計解析度就不要再修改了。

#if unity_android

int scwidth = screen.width;

int scheight = screen.height;

int designwidth=720; //這個是設計解析度

int designheight=1280;

if( scwidth<=designwidth || scheight<=designheight)

return;

screen.setresolution(designwidth,designheight,true);

#endif

降低渲染解析度當然能過提高幀率,但是也會使得真正大螢幕的高階機(gpu效能高)的遊戲畫面變得模糊。這個時候需要判斷什麼時候才能使用解析度設定。

乙個簡單的辦法就是判斷平均fps, 如果最近15幀的平均fps低於25,就降低渲染解析度。有點簡單粗暴了。

private

float f_updateinterval = 0.5f;

private

float f_lastinterval;

private

int i_frames = 0;

private

float f_fps;

private

const

int fpsarraylen=8;

private

float fpsarray = new

float[fpsarraylen];

private

int fpsindex=0;

private

const

int standardfps=26;

/* 再update 中執行,每隔0.5秒計算一次fps*/

void fpsupdate()

}/*判斷時候達到了標準的fps*/

private

bool

isstandfps()

return

true;

}

以上**中,需要在update 函式中呼叫fpsupdate 就算fps。 在遊戲載入結束之後再4秒再呼叫isstandfps(), 如果幀率低於設定的標準,就需要降低渲染解析度了。 遊戲載入過程中會造成卡幀,所以建議載入結束後4秒在做判斷。

D8M 解析度和幀率的設定

1.如何設定解析度 對camera 如下暫存器進行修改 在demo中,我們利用了camera的auto size特性。解析度的設定變得非常的簡單只需要設定camera的 0x3808 0x380b 4個暫存器就可以。例如640x480 2.如何設定幀率 fps 在這個demo中 我們將 camera...

Unity 3D IOS設定解析度問題彙總

在lua上呼叫screen.setresolution傳入的number型如果帶有小數點,在ios上會出現解析度錯亂問題,環境 unity版本2018.3.10f1 設定解析度 function gamesettingmanager setresolutionlevel resolutionleve...

unity製作2d遊戲(捕魚達人)優化

1 圖集的優化 使用的外掛程式是 2d toolkit 2 聲音的優化 利用 全能音訊轉換通 對聲音進行乙個壓縮。3 的優化 減少foreach的使用。減少update fixedupdate lateupdate等的使用 減少在update中使用find。在開始的時候直接賦值好 刪除掉不用的空方法...