事件触发类型
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()
中的执行, 直到满足某种条件才会继续进行
-
_waitCount
计时器不为空 -
_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
容器中在周期中被渲染