在 Unity 中维护事件引用
玩家死亡事件可以由界面和音频共同监听,发送方和监听器引用同一个事件资产,重构前就能按资产查出引用位置,修改 UnityEvent 回调的方法名时需要单独核对序列化绑定
引用同一个类型化事件资产

上图显示发送方触发一个事件资产,再由绑定的监听器处理,在 Game Event Editor 中创建无参数事件 OnPlayerDefeated,把它赋给判断玩家是否被击败的脚本,再到 Game Event Behavior 绑定战败界面和音效的回调
using TinyGiants.GES.Runtime;
using UnityEngine;
public class PlayerHealth : MonoBehaviour
{
[GameEventDropdown, SerializeField] private GameEvent onPlayerDefeated;
[SerializeField] private float health = 100f;
public void TakeDamage(float damage)
{
if (health <= 0f) return;
health -= damage;
if (health <= 0f)
onPlayerDefeated.Raise();
}
}
打开该事件的 Event Action 列表,为每项回调选择场景对象和方法,在 Play Mode 把生命降到零,确认配置的响应各执行一次

改名前核对引用
在 Game Event Editor 选中事件并打开 Event Finder,修改事件或回调方法前,先检查哪些场景和资产引用了它

在数据库内修改事件名称会保留其 GES 事件 ID,Unity 对数据库子资产的引用还依赖资产 GUID 和本地文件 ID,移动或重新创建子资产后应再次核对引用,若改名的是 UnityEvent 列表中的方法,则要在原绑定处重新选择方法,并在 Play Mode 验证回调
管理切换场景时的监听器
多个场景可以使用同一个事件资产,在各自的 Behavior 或 Receiver 组件配置场景回调,跨场景常驻的服务使用持久化监听器,脚本监听器由注册它的对象在禁用或销毁时清理
