Cocos 2d效能優化

2021-10-05 13:49:20 字數 2533 閱讀 8303

每次建立乙個新的精靈都會帶來一定消耗,如果把之前刪除的精靈**到快取池,下次建立精靈時重複利用則省去這部分消耗。

var sushi=cc.sprite.

extend

(

reuse:

function()

, unuse :

function()

});判斷cc.pool是否有某個類

cc.pool.

hasobject

(targetclass)

放入和獲取

cc.pool.

putinpool

(instance)

cc.pool.

getfrompool

(poolsprite)

優化例項this.removefromparent();

cc.pool.putinpool(this);

在移除的時候,加入緩衝池

var sushi = cc.sprite.

extend(,

blink:

function()

;this

._animation.

setdelayperunit(1

/20);

//生成 action

this

.stopallactions()

;var action1 = cc.

animate

(this

._animation)

.repeat(1

);//函式動畫

var action2 = cc.

callfunc

(function()

; event.

setuserdata

(data)

; cc.eventmanager.

dispatchevent

(event);}

.bind

(this))

;var sequence = cc.

sequence

(action1, action2)

this

.runaction

(sequence);}

, reuse:

function()

, unuse:

function()

});sushi.

create

=function()

else

return

newsushi()

;}

使用環境:繪製方式為webgl有效,canvas方式無效

project.json配置:「rendermode」: 0

;示例**

var spritebatchscene = cc.scene.

extend(,

addsprite:

function()

},addsprite2:

function()}})

有些遊戲關卡,為了節省資源,通常會採用一些解決背景加配置裝飾物的方式生產背景效果,其自身和子節點在建立完畢後,就很少發生例如:新增、刪除、運動等,cocos-2d-為其定製渲染優化機制-圖層預烘焙

圖層預烘焙優化得益於cc.layer 最加的bake函式,乙個呼叫bake函式的層會將其自身以及所有的子節點烘焙到一張畫布(canvas),只要自身以及所有子節點不發生例如新增或刪除子節點,以及執行動作等變動行為,那麼在下一幀繪製時,引擎會將預烘焙到畫布上內容直接繪製出來。

使用環境:繪製方式為canvas,webgl方式無效

project.json配置:「rendermode」: 1,

var layer =

newcc.layer()

;layer.

bake()

;

var bakescene = cc.scene.

extend(,

addbg:

function()

layer.

bake()

;}})

cocos2d 優化記憶體使用

為優化應用記憶體使用,開發人員首先應該知道什麼最耗應用記憶體,答案就是紋理!紋理幾乎會佔據90 應用記憶體。所以盡量最小化應用的紋理記憶體使用,否則應用很有可能會因為低記憶體而崩潰。本文介紹cocos2d x遊戲通用的兩條記憶體優化原理指導。什麼樣的紋理最耗應用記憶體?或這些紋理會消耗多少記憶體?當...

cocos2d實現語音 Cocos2d 聲音API

param url 聲音路徑 cc.audioengine.playmusic url loop 停止背景 param releasedata 是否釋放聲音資料,預設為false cc.audioengine.stopmusic releasedata 暫停背景 cc.audioengine.pau...

Cocos2D研究院之初識Cocos2d(二)

在正式介紹cocos2d之前,我先囉嗦一下本人對這套引擎的看法。我認為coos2d最大的作用就是降低開發成本 貌似所有引擎都是這樣 對於研發部門來說,最大的成本就是時間,所以節省時間是降低成本最有效的方式,cocos2d幾乎封裝了所有開發ios遊戲需要的底層 使剛剛接觸oc的開發者也能很快的製作出效...