API 参考 / 事件系统
ResourceReloadEvent
资源 / 语言重载事件。宿主真实切换语言并完成重载后投递 Kind.LANGUAGE(同语言重复设置不投递);Kind.RESOURCES 当前没有宿主发布点——资源热重载是后台线程事实,与「监听器在游戏线程回调」的线程约定冲突,宿主如实声明暂不投递。
方法速览
| 方法 | 用途 |
|---|---|
kind() | 重载种类 |
detail() | 重载细节 |
kind()
java
public Kind kind();行为:返回重载种类 LANGUAGE 或 RESOURCES。当前只有 LANGUAGE 会实际到达。
detail()
java
public String detail();行为:Kind.LANGUAGE 时返回新的 locale(如 "zh");Kind.RESOURCES 时为 null。
示例
java
ctx.eventBus().subscribe(ResourceReloadEvent.class, event -> {
if (event.kind() == ResourceReloadEvent.Kind.LANGUAGE) {
// 语言已切换:刷新缓存的文案 / 重新读取自带语言文件
reloadCachedTexts(event.detail());
}
});完整签名
java
public class ResourceReloadEvent extends Event {
public enum Kind {
LANGUAGE,
RESOURCES
}
public ResourceReloadEvent(Kind kind, String detail);
public Kind kind();
public String detail();
}行为核验:发布点在 Translator 的语言重载钩子 → GlobalHostEventRelay 转播,发生在游戏线程内同步投递。监听器不应假设 RESOURCES 会到达。事件不可取消。
稳定性:2.0 起冻结;LANGUAGE 的真实发布点为 阶段 3 新增。