美文网首页
Event 与 Interpreter

Event 与 Interpreter

作者: Heartcase_b8c0 | 来源:发表于2020-12-26 13:40 被阅读0次

事件触发类型

event._trigger的值与对应触发类型和其运行环境

触发类型 运行环境
确定键 0 $gameMap._interpreter
玩家接触 1 $gameMap._interpreter
事件接触 2 $gameMap._interpreter
自动执行 3 $gameMap._interpreter
并行处理 4 Event._interpreter

翻译器内脚本上下文

脚本中的this指向翻译器
通过this._eventId可以获取所属事件 ID
公共事件会作为子事件队列继承父事件的_eventId
通过$gameMap.event(eventId)可以获取到触发的事件

自动执行和并行处理

并行事件是由Game_Event对象自身的_interpreter中执行的
而其他事件是由于当前的地图对象Game_Map中的_interpreter执行
在同一update()生命周期中, 只有一个需要等待的事件会在Game_Map中执行, 包括公共事件
在这个事件其后的所有事件会因为交还控制权给update而被跳过
而同一update()生命周期中, 多个需要等待的事件会在Game_Event中分别执行

翻译器等待

翻译器在执行需要等待的事件后会进入等待模式
在等待模式下, 会跳过翻译器在本次update()中的执行, 直到满足某种条件才会继续进行

  1. _waitCount 计时器不为空
  2. _waitMode 等待模式不为''

当执行定时-等待事件时, 会设置一个等待倒计时_waitCount
当执行一些需要等待的事件, 比如移动-设置移动路线...时, 会设置_waitMode
每次 update 会执行_waitMode对应的检查来判断事件是否需要继续等待

事件数据加载

数据初始化: Game_Map.prototype.setupEvents
$dataMap.events获取地图事件信息, 创建对应的Game_Event对象记录到_events
输出: Game_Map.prototype.events
暴露_events给外部调用

事件图像加载

加载到容器: Spriteset_Map.prototype.createCharacters

Scene_Map.prototype.onMapLoaded回调函数唤起
会对Game_Map.prototype.events()中每一个Game_Event创建一个Sprite_Character
新的Sprite_Character会放入_tilemap容器中在周期中被渲染

相关文章

网友评论

      本文标题:Event 与 Interpreter

      本文链接:https://www.haomeiwen.com/subject/zycgnktx.html