UIHandler:UI处理器
UI处理器抽象类
UIHandler
UIHandler是一个抽象类,提供了更优雅的UI管理方式。- 它封装了UI的注册、生命周期回调和数据通信,你只需要继承它并实现回调方法即可。
- 创建继承实现之后,创建实例即注册UI
基本用法
构造参数
identifier: String — UI唯一标识uiConfig: File — UI配置文件
构造时会自动调用 ArcartXUIRegistry.register() 注册UI,并绑定生命周期回调。
生命周期回调
onOpenPre(player)
- UI打开前的回调,请求客户端打开UI之前执行,可在此处理数据或者发送早于控件create事件的预先包
- 详细解释下这个控件create之前的包是什么意思:
- UI打开流程:
- 收到打开请求
- 创建UI实例
- 检查有没有在UI打开之前就给该UI发送的包 如果有则调用对应处理器处理
- 创建该UI所有控件(即上文说的控件create)
- UI打开流程:
- 参数:
player: Player — 目标玩家 - 适合在此处准备数据,发送控件create之前的包
onOpenPost(player)
- UI打开后的回调,客户端确认UI已打开后触发
- 参数:
player: Player — 目标玩家 - 适合在此处发送初始数据到UI
onClose(player)
- UI关闭时的回调
- 参数:
player: Player — 目标玩家 - 适合在此处清理资源、保存数据等
onPacket(player, identifier, data)
- 收到客户端UI发来的数据包时触发
- 参数:
player: Player — 发送数据的玩家identifier: String — 数据包标识data: List<String> — 数据内容
便捷方法
open(player)
- 为玩家打开此UI,会先调用
onOpenPre
- 参数:
player: Player — 目标玩家 - 调用示例
close(player)
- 为玩家关闭此UI
- 参数:
player: Player — 目标玩家 - 调用示例
sendPacket(player, packetHandler, packet)
- 向玩家客户端的UI发送数据包
- 参数:
player: Player — 目标玩家packetHandler: String — 处理器名称packet: Object — 数据包内容
- 调用示例
sendRun(player, shimmerCode)
- 在玩家客户端的UI中执行Shimmer脚本
- 参数:
player: Player — 目标玩家shimmerCode: String — Shimmer脚本代码
- 调用示例
