3.5 KiB
3.5 KiB
StrayFog 框架 UI事件绑定指南
一、事件绑定方式
1.1 代码绑定(使用框架封装组件)
public class LoginWindow : AbsHFUIWindow
{
[SerializeField] private SFUI_Button btn_Login;
protected override void OnRunAwake()
{
base.OnRunAwake();
// OnRunAwake: 初始化组件引用和按钮事件绑定(仅调用一次)
btn_Login.OnAddClickListener += OnBtnLogin;
btn_Login.OnAddEnterListener += OnBtnEnter;
btn_Login.OnAddExitListener += OnBtnExit;
}
protected override void OnOpen(Action _onOpenComplete)
{
base.OnOpen(_onOpenComplete);
// OnOpen: 注册CTC事件监听(每次打开调用)
HFFunCatalogue.Event.CTCEvent.AddListener<HFEvent_CTC_LoginResult>(
enHFCTCEvent.LoginResult, OnLoginResult);
}
protected override void OnClose(Action _onCloseComplete)
{
base.OnClose(_onCloseComplete);
// OnClose: 移除CTC事件监听(每次关闭调用)
HFFunCatalogue.Event.CTCEvent.RemoveListener<HFEvent_CTC_LoginResult>(
enHFCTCEvent.LoginResult, OnLoginResult);
}
void OnBtnLogin(GameObject go)
{
// 处理登录逻辑 - 使用框架标准调用方式
HFEvent_CTC_Login evt = HFFunCatalogue.New<HFEvent_CTC_Login>();
evt.account = "player_account";
evt.password = "encrypted_password";
evt.Dispatch();
}
void OnBtnEnter(GameObject go)
{
// 鼠标进入
}
void OnBtnExit(GameObject go)
{
// 鼠标退出
}
void OnLoginResult(HFEventArgBase arg)
{
// 处理登录结果
}
}
1.2 框架封装UI组件列表
| 组件名 | 基类 | 说明 |
|---|---|---|
SFUI_Button |
AbsSFUI_Button : Button |
按钮组件 |
SFUI_Text |
AbsSFUI_Text : Text |
文本组件 |
SFUI_Image |
AbsSFUI_Image : Image |
图片组件 |
SFUI_Toggle |
AbsSFUI_Toggle : Toggle |
开关组件 |
SFUI_ScrollRect |
AbsSFUI_ScrollRect : ScrollRect |
滚动区域 |
SFUI_InputField |
AbsSFUI_InputField : InputField |
输入框 |
1.3 SFUI_Button事件委托
| 事件 | 委托签名 | 说明 |
|---|---|---|
OnAddClickListener |
Click(GameObject go) |
点击事件 |
OnAddEnterListener |
Enter(GameObject go) |
鼠标进入 |
OnAddExitListener |
Exit(GameObject go) |
鼠标退出 |
OnAddPointerUpListener |
PointerUp(GameObject go) |
指针抬起 |
二、事件系统分类
2.1 CTCEvent(客户端内部事件)
// 注册监听
HFFunCatalogue.Event.CTCEvent.AddListener<HFEvent_CTC_CardUpdate>(
enHFCTCEvent.CardUpdate, OnCardUpdate);
// 触发事件
HFEvent_CTC_CardUpdate evt = HFFunCatalogue.New<HFEvent_CTC_CardUpdate>();
evt.cardId = 123;
HFFunCatalogue.Event.CTCEvent.Dispatch(evt);
2.2 STCEvent(服务器事件)
// 在Manager中注册
HFFunCatalogue.Event.STCEvent.AddListener<HFEvent_STC_PlayerInfo>(
enHFSTCEvent.PlayerInfo, OnPlayerInfo);
注意:UI窗口中不监听STCEvent,应在Logic层Manager中监听。
三、事件参数回收
3.1 使用对象池
// 获取事件参数(从对象池获取)
HFEvent_CTC_PlayerLevelUp evt = HFFunCatalogue.New<HFEvent_CTC_PlayerLevelUp>();
evt.playerId = 1;
evt.newLevel = 10;
// 触发事件(事件系统会自动回收)
HFFunCatalogue.Event.CTCEvent.Dispatch(evt);
版本: v1.0
适用范围: GiftGameX项目业务开发人员