cocos creator onload的執(zhí)行順序

今天做項(xiàng)目時(shí),在onload內(nèi)寫東西,我在a.js的onload里定義了變量var1,b.js的onload里調(diào)用了a的一個(gè)方法func1,而func1中又使用到了var1,于是運(yùn)行的時(shí)候提示var1沒有定義,我不是在onload里定義了嗎?在上面打算斷點(diǎn),結(jié)果沒有走進(jìn)來(lái),直接就去func1里用var1,我懷疑可能是它們的onload有個(gè)先后執(zhí)行的順序,于是在層級(jí)管理中把他們換了一個(gè)位置,果然就好了。
之所以這么懷疑,是因?yàn)楣俜轿臋n中有寫到過(guò):

節(jié)點(diǎn)在列表中的排序決定了節(jié)點(diǎn)在場(chǎng)景中的顯示次序。在層級(jí)管理器中顯示在下方的節(jié)點(diǎn)的渲染順序是在上方節(jié)點(diǎn)的后面,即下方的節(jié)點(diǎn)是在上方節(jié)點(diǎn)之后繪制的,因而最下方的節(jié)點(diǎn)在 場(chǎng)景編輯器 中顯示在了最前。

那么腳本的執(zhí)行順序應(yīng)該和其所掛載的節(jié)點(diǎn)相關(guān),為此,我還特地做了一個(gè)實(shí)驗(yàn)。


層級(jí)管理器

當(dāng)我把層級(jí)這樣排布時(shí),每一個(gè)tree節(jié)點(diǎn)上都掛了同一個(gè)腳本TestScript,寫了一句話:

onLoad () {
        //測(cè)試誰(shuí)先load
        cc.log("onload : " + this.node.name);
    },

運(yùn)行查看日志得到的結(jié)果:


結(jié)果

非常完美,onload的執(zhí)行順序就是從上往下的,那么,如果我掛在同一個(gè)節(jié)點(diǎn)上的話,這時(shí)候的執(zhí)行順序會(huì)是怎么樣呢?于是我又做了一個(gè)實(shí)驗(yàn),又寫了一個(gè)Test2Script腳本,還是一句話:

onLoad () {
        //測(cè)試誰(shuí)先load
        cc.log("onload2 : " + this.node.name);
    },

我把兩個(gè)腳本都掛在tree上,不過(guò)把Test2Script放在了下面:


腳本順序1

這時(shí)候的執(zhí)行順序是:


腳本順序

結(jié)果證明誰(shuí)在上面 誰(shuí)就先運(yùn)行~
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容