Event 與 Interpreter

事件觸發(fā)類型

event._trigger的值與對(duì)應(yīng)觸發(fā)類型和其運(yùn)行環(huán)境

觸發(fā)類型 運(yùn)行環(huán)境
確定鍵 0 $gameMap._interpreter
玩家接觸 1 $gameMap._interpreter
事件接觸 2 $gameMap._interpreter
自動(dòng)執(zhí)行 3 $gameMap._interpreter
并行處理 4 Event._interpreter


翻譯器內(nèi)腳本上下文

腳本中的this指向翻譯器
通過this._eventId可以獲取所屬事件 ID
公共事件會(huì)作為子事件隊(duì)列繼承父事件的_eventId
通過$gameMap.event(eventId)可以獲取到觸發(fā)的事件

自動(dòng)執(zhí)行和并行處理

并行事件是由Game_Event對(duì)象自身的_interpreter中執(zhí)行的
而其他事件是由于當(dāng)前的地圖對(duì)象Game_Map中的_interpreter執(zhí)行
在同一update()生命周期中, 只有一個(gè)需要等待的事件會(huì)在Game_Map中執(zhí)行, 包括公共事件
在這個(gè)事件其后的所有事件會(huì)因?yàn)榻贿€控制權(quán)給update而被跳過
而同一update()生命周期中, 多個(gè)需要等待的事件會(huì)在Game_Event中分別執(zhí)行

翻譯器等待

翻譯器在執(zhí)行需要等待的事件后會(huì)進(jìn)入等待模式
在等待模式下, 會(huì)跳過翻譯器在本次update()中的執(zhí)行, 直到滿足某種條件才會(huì)繼續(xù)進(jìn)行

  1. _waitCount 計(jì)時(shí)器不為空
  2. _waitMode 等待模式不為''

當(dāng)執(zhí)行定時(shí)-等待事件時(shí), 會(huì)設(shè)置一個(gè)等待倒計(jì)時(shí)_waitCount
當(dāng)執(zhí)行一些需要等待的事件, 比如移動(dòng)-設(shè)置移動(dòng)路線...時(shí), 會(huì)設(shè)置_waitMode
每次 update 會(huì)執(zhí)行_waitMode對(duì)應(yīng)的檢查來判斷事件是否需要繼續(xù)等待

事件數(shù)據(jù)加載

數(shù)據(jù)初始化: Game_Map.prototype.setupEvents
$dataMap.events獲取地圖事件信息, 創(chuàng)建對(duì)應(yīng)的Game_Event對(duì)象記錄到_events
輸出: Game_Map.prototype.events
暴露_events給外部調(diào)用

事件圖像加載

加載到容器: Spriteset_Map.prototype.createCharacters

Scene_Map.prototype.onMapLoaded回調(diào)函數(shù)喚起
會(huì)對(duì)Game_Map.prototype.events()中每一個(gè)Game_Event創(chuàng)建一個(gè)Sprite_Character
新的Sprite_Character會(huì)放入_tilemap容器中在周期中被渲染

最后編輯于
?著作權(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ù)。

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