美文网首页
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