跳到主要内容

在 Game Event Behavior 中配置事件动作

TinyGiants
Unity Games & Tools Developer

一个伤害事件可以通过不同回调更新界面、播放音效和触发特效,在 Game Event Behavior 中配置动作列表、执行条件和调度,GES 2.3.0 还允许在 Receiver Inspector 中为单个接收器单独设置 Action Condition

打开 Game Event Behavior​

在 Game Event Editor 选中伤害事件,点击对应的 Behavior 按钮,窗口中可配置 Action Condition、Event Action 和 Schedule Configuration

Game Event Behavior 中的事件信息、条件、动作与调度

确认事件签名​

在 Event Information 核对事件名、参数类型与数据库,目标方法的动态参数应当匹配这个签名

Event Information 显示当前事件的名称、类型与数据库

创建一个参数类型为 float 的 OnDamageReceived,将生成的事件资产分配给以下组件,项目的伤害结算完成后调用 PublishDamage

using TinyGiants.GES.Runtime;
using UnityEngine;

public sealed class DamageEmitter : MonoBehaviour
{
[GameEventDropdown, SerializeField]
private GameEvent<float> onDamageReceived;

public void PublishDamage(float amount)
{
if (onDamageReceived != null)
onDamageReceived.Raise(amount);
}
}

设置执行条件​

当整个 Event Action 列表需要共用条件时,在 Action Condition 启用 Enable Conditions,添加一个比较,左侧选 Event Argument,右侧选 Constant 并输入 50,运算符选择 >

Action Condition 中的执行开关和条件树

这里的条件控制 Manager 运行的动作列表,如果伤害数字每次都要刷新、只有镜头震动需要阈值,关闭事件窗口的 Enable Conditions,再把震动和阈值配置到类型匹配的 Receiver 组件中

绑定 Event Action​

在 Event Action 中添加一个条目,将场景目标拖入对象字段,选择要执行的方法

Event Action 的对象和方法选择字段

选择动态方法时,参数顺序和事件签名一致

事件签名方法示例
无参数FlashRed()
floatShowNumber(float amount)
GameObject Sender 与 float ArgumentHandleHit(GameObject sender, float amount)

在方法列表的动态参数区域选择 ShowNumber(float),运行时伤害值会传给该方法

添加 Event Action 并为目标选择方法

设置 Schedule Configuration​

Action Delay、Repeat Interval 与 Repeat Count 作用于当前事件的派发时序,延迟播放音效时可将其绑定到单独的事件,以便保留伤害数字的即时刷新

Schedule Configuration 中的延迟、间隔与重复次数

一次性音效可设 Action Delay 为 0.03、Repeat Interval 为 0,需要在单独事件上触发三次流血回调时,将 Repeat Interval 设为 2,将 Repeat Count 设为 3

同一事件再次 Raise 会取消它尚未完成的自动调度,需要并行计时的效果应由各自的运行对象管理

在 Play Mode 验证伤害响应​

  1. 触发伤害值 30,确认伤害数字和闪屏出现,设置了阈值的镜头 Receiver 保持静默
  2. 触发伤害值 80,确认镜头震动与基础反馈都执行
  3. 触发单独的音效或流血事件,核对延迟、重复间隔和次数

项目代码负责结算与触发,场景回调、条件和时序可在对应的事件或 Receiver 上调整

配置条件与动作