Addressables
使用 Addressables 按需加载 GameEventDatabase,并在该内容的使用期内让 GameEventManager 查询其中的事件
在 Package Manager 安装 com.unity.addressables 1.16.0 或更高版本,以启用 TinyGiants.GES.Addressables 程序集,加载前先确认场景中已有 GameEventManager,并将数据库加入 Addressables 组
调用 LoadDatabaseAsync 时传入数据库的 Address 或 GUID,在成功回调中使用事件的内部 GUID 查找事件
using TinyGiants.GES.Addressables;
GameEventAddressables.LoadDatabaseAsync(
"events/combat",
lease =>
{
GameEventBase started = lease.GetEvent("internal-event-guid");
// 当前模块使用数据库期间保留 lease
},
exception => Debug.LogException(exception));
请求与租约
LoadDatabaseAsync 返回 GameEventDatabaseLoadRequest,取消尚未完成的请求时可调用 Cancel()、Dispose() 或传入 CancellationToken,取消只影响该请求,失败回调会收到 OperationCanceledException
同一 key 的并发请求共享一次加载,每个成功回调收到自己的 GameEventDatabaseLease,内容仍在使用时保留租约,使用结束后释放它
释放最后一个相关租约后,GES 释放 Addressables handle,并注销由集成注册的数据库,原先由项目自行注册的数据库会保留其注册状态
查询失败
lease.GetEvent 在找不到内部事件 GUID 或租约已失效时返回 null,数据库内或已注册的其他数据库中出现重复的内部事件 GUID 时,加载请求进入失败回调
项目自行负责加载和注册时,参考运行时数据库与事件查询