暫時剔除物體或取消渲染來提高遊戲執行效率

2021-05-26 23:37:47 字數 904 閱讀 3929

做手機遊戲開發沒有做pc那麼能放得開手,雖說強大的智慧型機時代已近到來,但是小塊頭畢竟是小塊頭,很多東西還是抗不住的。

前不久做了乙個測試,測試機有:htc g7、三星i9000、三星i9***(不記得了)、htc g10、里程碑2;

在攝像機照射三角面數這一項的測試上,如果想跑流暢(12幀以上)

htc g7 只能跑2w面,其他幾個勉強能撐到5w。當然,這跟照射器的選擇也有很大的關係。

可能當你聽到5w這個數字的時候,覺得它已經很大,可是在場景製作美工同學眼裡,這真的太難了。

因為說是有5w個面的峰值,但是策劃要擺放怪物,n個玩家可能同時出現在乙個畫面中,玩家還要放技能特效,等等。

把這5w個面分到美工同學手中的時候,只剩下1w-1.5w了。

靠這個數字去做乙個很絢麗的3d場景,幾乎沒有可能,傳說中的坑爹。。。

於是乎,暫時剔除物體或取消渲染就開始發揮作用了。

就像gameloft的《混沌與秩序》一樣,它們對場景做的優化處理就很好的利用到了這一點。

比如樹木、房屋在50公尺外是不可見的,

怪物玩家在30公尺外是不可見的,

火把等粒子效果在20公尺外是不可見的,

等等。unity中也可以簡單的實現,那就是active 和 render。

設定剔除乙個物體:

gameobject.active = false;  // 不可見,可以說是不存在於場景中了

如果想讓其子物體都不可見,則要這樣:

gameobject.setactiveresursively(false);

設定不渲染:

gameobject.render.enabled = false;  // 不可見,但是還存在於場景中,還可以碰撞

當然,如果直接憑空的讓物體消失或出現,感覺非常突兀,這時候就要用到了apha值的變化,實現漸隱的效果。

Promise鏈式呼叫 終止或取消

promise 分兩種方法,then成功,catch失敗 let promise new promise function resolve,reject promise.then function val then function val catch function val 第三種方法有點粗暴,...

設定或取消自動登陸到Administrator帳戶

安裝windows xp時,如果設定了乙個管理員帳戶,那麼系統內建沒有密碼保護administrator管理員帳戶是不會出現在使用者登入列表中的,雖然它身在幕後,可卻擁有系統最高許可權,為了方便操作及保證系統安全,可以先給它設定密碼,然後再把它請到臺前來,以下便是具體方法 使用 傳統登入提示 登入 ...

android中全屏或取消標題欄

去掉標題欄的方法 第一種 在activity的oncreate 方法裡加入以下語句。requestwindowfeature window.feature no title 去掉標題欄 注意這句一定要寫在setcontentview 方法的前面,不然會報錯的。第二種 在androidmanifest...