Skip to content

场景事件

场景事件是一种类RPG事件的机制,通过判断触发条件、靠近、按键及各种方式触发,触发后可以进入对话模式,或改变持有物,切换场景等。

场景事件最终会基于调度器(Stage Event Runner)判断是否满足触发条件,最终调用某个具体 Graph(节点图)来执行事件。

编辑事件调度数据

数据库中选择 “事件” 标签卡,点击 点 “+” 号创建,或蓝色ID链接进行编辑。

事件基础信息

创建场景事件步骤1

控制能力

场景事件具备开启、关闭,指定循环次数等能力。

  • 启用:控制器的开关,决定是否默认开启。
  • 优先级:当有多个事件包含相同触发条件时,满足事件触发条件后,先后调度的优先级。优先级按降序(从大到小)进行排序。
  • 锁定游戏操作:事件运行后是否锁定玩家操作,不允许移动、交互等。
  • 循环次数:当满足事件触发条件后,事件最多重复执行多少次,默认为1次,即仅触发一次。
  • 循环间隔:循环触发时运行的间隔,按毫秒(ms)算。
  • 完成后禁用:触发后是否关闭禁用事件。

后台特性

游戏事件具备后台执行能力,可分为多个通道执行,且每个通道内同时只能执行一个事件(后续触发的事件均会在通道内排队),游戏可以分多个通道。

  • 运行通道
    • 主通道:即类似NPC对话事件等需要锁定玩家操作的事件。
    • 后台:即类似触发场景机关等,无需锁定玩家操作的事件。

存档特性

游戏事件允许存储内部状态,但由于无法精准恢复到具体节点图的节点,因此恢复节点则为

注意:通常不推荐对事件节点图的内部运行状态进行保存。

  • 入口节点:事件执行后的默认启动节点ID。
  • 恢复节点:当事件处于触发状态(如后台事件),同时游戏进行了保存,恢复时会从这个节点开始重新运行。
  • 保存运行状态:是否在存档内保存节点图内部状态。

事件触发器

这里的触发器用于进入场景,或是达成事件结束后的链式触发效果。点击右上角 “+” 可以增加触发器。

创建场景事件步骤2

触发条件

通过判断触发条件(即Flag)来判断是否该事件是否触发,比如和某NPC对话后,共享变量 “flag001” 被设置为了 “√”。然后就可以基于 “flag001是否等于√” 来判断是否真正触发该事件。

创建场景事件步骤3

触发条件分为:

  • shared_memory:共享变量
  • event_completed:事件是否触发过至少一次
  • inventory_item:背包内某道具的持有数,是否大于、等于、小于...
  • inventory_money:持有金是否大于、等于、小于...
  • stage_object:场景物件是否开启
  • stage_actor:场景角色是否开启

所有事件条件都必须同时成立,才会触发事件。

事件触发自检方式

触发器和条件列表需同时成立,才能触发事件。

例举:比如玩家进入了场景 “stage005” ,然后 flag024 数值必须为 5,才会触发事件 “stage_event_023”。

编辑节点图

点击事件数据的Graph下的蓝字就可以打开节点图。

编辑事件节点

操作方式

  • 点击鼠标滚轮中间:拖拽节点图
  • 从In/Next的“○”拖拽出“引线”:用于链接,或创建接续节点

节点图原理

节点默认从 “开始节点”(需设置Entry ID,并将这个ID回填至事件基础信息的“入口节点”)运行到 “退出节点”,所有节点需首尾相连(首=In,尾=Next),完全断连的节点将被跳过。

节点类型

创建事件节点

目前默认提供可用的节点分类如下:

  • GameObject:当前场景内的游戏对象操作
  • Nani 脚本:播放对话事件等,需安装Naninovel扩展
  • UI:游戏界面的开关
  • 值:数值变量,用于扶植操作
  • 共享变量:游戏内的共享变量操作
  • 场景:切换场景
  • 场景对象:开启关闭游戏对象
  • 局部变量:节点图内的局部变量
  • 控制流:增加开始、退出节点,调用其他事件或终止事件
  • 摄像机:游戏内的相机控制
  • 游戏动作:调用游戏动作(Game Action)
  • 灯光:场景内的灯光控制操作
  • 物品:玩家背包物品的管理
  • 状态:当前事件的开关控制
  • 角色:场景内的玩家、NPC管理,包括将玩家操作对象改为某NPC等
  • 调试:用于输出日志等
  • 音频:播放游戏音乐、音效等

基于场景物件触发事件

通过挂载 “Stage Event Object” 和 “Stage Event Trigger 2D”,即可在场景内实现按键触发,或靠近触发物体触发事件。

场景内触发事件

Mirror Stage 2 0.1.0 使用文档