最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

淺談CNPC腳本1.7與1.8+腳本的區(qū)別

2023-07-10 13:45 作者:Saltfish_Sheep  | 我要投稿

底層實(shí)現(xiàn)

在談論它們的區(qū)別之前,我們首先要知道腳本是如何實(shí)現(xiàn)的

CNPCmod在Forge訂閱了一些事件,或者是通過(guò)覆寫方法之類的手段,總之使得它可以在需要的時(shí)候運(yùn)行自己自定義的代碼,但這些代碼大多數(shù)與腳本無(wú)關(guān),CNPCmod在自己內(nèi)部已經(jīng)處理完了東西,不給你的機(jī)會(huì)。

但是,有一部分情況例外,那便是CNPCmod手動(dòng)向你發(fā)來(lái)了事件,這便是觸發(fā)腳本的時(shí)候。

CNPC用容器,儲(chǔ)存你寫的腳本的文本信息,然后在關(guān)鍵時(shí)候調(diào)用腳本,我描述一下大致發(fā)生了什么:

CNPC覺(jué)得應(yīng)該發(fā)生什么->CNPC訪問(wèn)了容器->CNPC用腳本引擎調(diào)用了腳本

雖然好似容器并沒(méi)有提及的必要,但這對(duì)于1.8+和1.7有很大區(qū)別。

容器

總所周知的是,1.7只能依賴實(shí)體NPC寫腳本,1.12有player和forge框的同時(shí)在NPC上寫腳本,這是容器的區(qū)別。

對(duì)于1.12,player框,forge框,NPC框,它們各自有自己的容器,事實(shí)上,它們底層的結(jié)構(gòu)是這樣的:

單個(gè)玩家-腳本控制器-復(fù)數(shù)的腳本容器(每一個(gè)意味著一個(gè)框)

單個(gè)NPC-腳本控制器-復(fù)數(shù)的腳本容器

單個(gè)存檔(服務(wù)端)-腳本控制器-復(fù)數(shù)的腳本容器

而1.7,我沒(méi)有具體看源碼,但你可以以此想象它是怎么樣的結(jié)構(gòu)。

函數(shù)與鉤子

在大多數(shù)人的感受中,1.8+與1.7最大的變化就是鉤子函數(shù)化了,我大概講一下到底發(fā)生了什么。

對(duì)于1.7而言,一個(gè)腳本框其實(shí)就相當(dāng)于一個(gè)大的函數(shù),當(dāng)你寫下npc,player,event,這些你不用任何額外操作就可以直接調(diào)用的變量時(shí),就相當(dāng)于調(diào)用了一個(gè)函數(shù)的參數(shù)。

我寫一段并不能執(zhí)行,但是可以反應(yīng)1.7與1.12區(qū)別的代碼:

不能執(zhí)行的演示代碼

理解了1.7的實(shí)質(zhì),你就大概可以理解1.12了

不過(guò)與1.7還有一點(diǎn)不同的是:

對(duì)于1.7而言,event是一個(gè)額外參數(shù),負(fù)責(zé)提供某個(gè)事件才能發(fā)生的特殊功能,或者取消這個(gè)發(fā)生的事件。

對(duì)于1.12而言,event是所有參數(shù)的“包裝盒”,像是1.7直接調(diào)用的npc和player,你都要通過(guò)調(diào)用event字段獲取。

另外,1.7的“函數(shù)參數(shù)”是硬命名,event你必須寫全event,player你必須寫全player,但是1.12的真函數(shù)中,參數(shù)名你是可以自己定義的,參數(shù)名沒(méi)有任何意義,它相當(dāng)于一個(gè)變量,只是指向了傳入函數(shù)的事件對(duì)象。

這三種寫法等價(jià)

不過(guò)函數(shù)名必須正確,因?yàn)镃NPCmod層是根據(jù)函數(shù)名調(diào)用函數(shù),而不是其他任何東西。

淺談CNPC腳本1.7與1.8+腳本的區(qū)別的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
无为县| 武冈市| 繁峙县| 杭州市| 玉屏| 双鸭山市| 三明市| 资源县| 闽清县| 阳朔县| 青冈县| 筠连县| 垦利县| 梅州市| 乌拉特前旗| 曲阳县| 武安市| 汾阳市| 正蓝旗| 方正县| 招远市| 宁国市| 永嘉县| 仲巴县| 鹰潭市| 威宁| 荆州市| 滦南县| 门头沟区| 青河县| 玉山县| 商都县| 平利县| 如皋市| 城步| 开封县| 米易县| 台东县| 浦东新区| 彩票| 南陵县|