cocos場景替換順序(坑)

2021-07-24 10:15:35 字數 500 閱讀 8687

最近在寫乙個投籃的遊戲,由於自己寫了乙個簡單的物理模組,物理記憶體管理沒有使用cocos的記憶體池,然後在場景替換時遇到了一些坑。

1、cocos的onenter是在init函式執行之後執行的,所以常常把一些邏輯放到onenter中開始執行,比如schedule,這樣可以避免cocos的node還沒載入就進行邏輯判斷。

2、在執行replacescene時,cocos先載入的是新場景,然後再在下一幀執行舊場景的銷毀邏輯。

newscene::init() => newscene::onenter() => (下一幀執行)oldscene::onexit()

順序示意如上,所以在銷毀記憶體時,不能將邏輯放到onexit中,最好的辦法是手動在replacescene之前呼叫,比如在我的例子中,需要銷毀場景中的實體(這些實體是自己分配的記憶體),如果放到exit中,它就會在update中繼續呼叫邏輯上已經銷毀的實體,在下一幀才銷毀他們。

cocos真的是茫茫多的坑啊

Cocos 踩過的坑

有些小坑和解決方案,想記錄下來 0.一些有用的 easing緩衝動畫 3d網格動畫 1.防止點選穿透 場景 在遊戲介面有功能按鈕,上層彈出layer之後,加入了遮罩,但是遊戲介面的功能按鈕還可以點選,穿透了!方案1 開啟遮罩的互動性 interactable node.settouchenable ...

cocos中類擴充套件的坑

這個真是坑啊,無語了。通常在模擬類的實現時,屬性是放在例項上,方法是放在原型上,取了節省效能和互不干擾的折中。但是cocos的有點扯。屬性也放在了原型上,這就導致了一些問題。先看重現 定義乙個新的類 var newclass cc.class.extend 想想,在這裡定義prop的時候,下意識是不...

cocos 菜鳥爬坑日記02

1.cocos 文件中會有一些api 的大小寫是有誤的,如果到處都找不到問題,可以嘗試修改以下方法的大小寫 比如cc.spwan等 2.js裡面this 有四種用法,在一些方法中,假如有很多層域,可以自定義指標指向想要的物件,提前避免混亂例如 var that this,that.somematho...