五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Cocos Creator 技巧:Cocos Creator 常見錯(cuò)誤排查方法

2023-02-17 10:09 作者:游戲開發(fā)RAIN  | 我要投稿

ocos Creator 新手開發(fā)的時(shí)候經(jīng)常會(huì)遇到一些錯(cuò)誤不知道如何解決,今天把這些錯(cuò)誤總結(jié)一下,下次遇到的時(shí)候,自己知道如何分析。


?我們?cè)谑褂肅ocos Creator開發(fā)的時(shí)候,運(yùn)行游戲項(xiàng)目,經(jīng)常會(huì)遇到這樣的問題:

TypeError: Cannot read properties of null (reading 'getComponent')

at Test.start (Test.ts:9:18)

at component-scheduler.ts:261:22

at OneOffInvoker._invoke (component-scheduler.ts:228:13)

at OneOffInvoker.invoke (component-scheduler.ts:143:14)

at ComponentScheduler.startPhase (component-scheduler.ts:455:27)

at Director.tick (director.ts:702:37)

at Game._updateCallback (game.ts:929:22)

at updateCallback (pacer-web.ts:65:26)

對(duì)應(yīng)的代碼如圖:

如果你是初學(xué)者而言,你可以嘗試翻譯一下這個(gè)錯(cuò)誤,很多初學(xué)者會(huì)這樣翻譯:當(dāng)前這個(gè)對(duì)象里面運(yùn)行的時(shí)候沒有g(shù)etComponent這個(gè)方法,所以會(huì)報(bào)錯(cuò)。對(duì)應(yīng)到到代碼就是this.img對(duì)象里面沒有g(shù)etComponent這個(gè)方法。

其實(shí)正確的翻譯為:不能從空對(duì)象里面去讀屬性getComponent。而現(xiàn)在是從空對(duì)象里面去取getComponent,所以運(yùn)行的時(shí)候報(bào)錯(cuò),也就是說this.img 為null, 運(yùn)行的時(shí)候會(huì)執(zhí)行null.getComponent, 所以報(bào)錯(cuò)。

?代碼 “xxxxx.屬性或方法” 報(bào)錯(cuò) Cannot read properties of null 表示不是方法或?qū)傩詾閚ull,而是xxx為null。Undefine也是類似的,翻譯的時(shí)候一定要準(zhǔn)確,搞清楚到底誰為null。

同一個(gè)代碼打印有時(shí)候有值,有時(shí)候?yàn)閚ull

?初學(xué)者還會(huì)遇到一個(gè)問題,同一個(gè)代碼,同一個(gè)打印,有時(shí)候值是正常的,有時(shí)候打印出來值是不對(duì)的,如圖所示:

代碼第15行,同樣是打印 this.img, 有時(shí)候能出來打印Node, 數(shù)據(jù)正常,有時(shí)候?yàn)閚ull,這個(gè)是怎么回事呢?很多初學(xué)者就會(huì)懷疑人生了,其實(shí)這個(gè)時(shí)候往往是一個(gè)組件類的N個(gè)實(shí)例導(dǎo)致的,都會(huì)跑update的打印代碼,但是由于他們是不同組件實(shí)例,所以導(dǎo)致數(shù)據(jù)不同,一個(gè)組件實(shí)例的數(shù)據(jù)是正常的,一個(gè)是異常的,我們只要找出異常數(shù)據(jù)的組件實(shí)例就可以了,如何找呢?打印一下組件所在節(jié)點(diǎn)的名字,看下這個(gè)錯(cuò)誤異常數(shù)據(jù)的節(jié)點(diǎn)的名字是誰就可以了。如下圖所示:


報(bào)錯(cuò)的組件實(shí)例所在節(jié)點(diǎn)是audioNode, 正常的是camera節(jié)點(diǎn),這樣你就知道是哪個(gè)節(jié)點(diǎn)上掛的組件實(shí)例數(shù)據(jù)異常與報(bào)錯(cuò)了。

?

學(xué)會(huì)查看接口API

?

很多初學(xué)者寫代碼,不學(xué)無術(shù), 基礎(chǔ)知識(shí)也不詳細(xì)的學(xué)一下,拿起網(wǎng)上隨便一個(gè)案例,就像大牛一樣的跟著敲起來,美其名曰”做項(xiàng)目, 只有做項(xiàng)目才是真實(shí)的實(shí)戰(zhàn),能加快學(xué)習(xí)速度”。這個(gè)學(xué)習(xí)方法對(duì)于程序代碼新手而言是我見過最慢的學(xué)習(xí)方法,沒有之一。我們?cè)趯W(xué)習(xí)Cocos Creator每個(gè)組件的時(shí)候,要對(duì)著它對(duì)應(yīng)的接口文檔,去看去學(xué)習(xí),把大部分的接口在腦袋里面都過一遍, 同時(shí)遇到新的版本的cocos creator,接口有變化的時(shí)候,也渠道API接口,然后仔細(xì)閱讀每個(gè)接口的功能與參數(shù)名字。

從每個(gè)API的函數(shù)的名字,表示的是這個(gè)函數(shù)的功能與作用,每個(gè)參數(shù)的名字,表示的是傳入的數(shù)據(jù)類型等,返回值說明能告訴你這個(gè)函數(shù)的返回值,通過多閱讀API接口來提升自己的處理問題的能力。而API接口不一定非要去看文檔,在每個(gè)版本的.d.ts里面就有API對(duì)應(yīng)的接口,我們選中對(duì)應(yīng)的類型,鼠標(biāo)”右鍵”, “Go to Definition”,轉(zhuǎn)到定義,就能在.d.ts文件里面查看接口

比如Node類型的接口: setParent

接口名字setParent, 從英文單詞,就能知道,設(shè)置節(jié)點(diǎn)的父親節(jié)點(diǎn)

每個(gè)參數(shù)的作用,都在.d.ts里面詳細(xì)的說明了,每次我們學(xué)習(xí)的時(shí)候,對(duì)著這些參數(shù)與說明看一遍,加深一下基礎(chǔ)知識(shí)的理解。

?

再來看一個(gè)接口變化的例子,當(dāng)我們用systemEvent的時(shí)候在新版本的Cocos Crator里面會(huì)有如下的提示,表示接口已經(jīng)移除了不能用了:

修正很簡單,還是老方法,轉(zhuǎn)到接口定義,如圖:

明確的告訴我們修正這個(gè)過時(shí)API的方法:

修正systemEvent, 使用 input修正;

修正SystemEvent, 使用Input 修正;

修正SystemEvent.EventType, 使用Input.EventType修正

所以修正這個(gè)過時(shí)代碼為:

所以學(xué)會(huì)基于.d.ts 類型接口函數(shù)查看的方法,能幫助我們更輕松的學(xué)會(huì)API的使用,以及相關(guān)API升級(jí)。

?今天的Cocos Creator 排錯(cuò)就分享到這里,關(guān)注我分享更多的游戲開發(fā)技巧。

?

我的學(xué)習(xí)交流Q群里面有更多學(xué)習(xí)資料與素材源碼,歡迎進(jìn)群領(lǐng)取



Cocos Creator 技巧:Cocos Creator 常見錯(cuò)誤排查方法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
海安县| 怀安县| 霍林郭勒市| 新郑市| 镇安县| 彩票| 阿拉尔市| 鹤山市| 淮滨县| 沙坪坝区| 峨眉山市| 乳山市| 苍山县| 杭州市| 三江| 台南市| 桃园市| 龙岩市| 新绛县| 和田县| 旬阳县| 衡阳市| 恭城| 桂林市| 潢川县| 呼图壁县| 四川省| 柳林县| 贞丰县| 辉南县| 永清县| 治县。| 徐水县| 晴隆县| 山东| 马公市| 沂水县| 毕节市| 龙州县| 房产| 普陀区|