129 lines
3.5 KiB
Markdown
129 lines
3.5 KiB
Markdown
# StrayFog 框架 UI事件绑定指南
|
||
|
||
## 一、事件绑定方式
|
||
|
||
### 1.1 代码绑定(使用框架封装组件)
|
||
|
||
```csharp
|
||
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(客户端内部事件)
|
||
|
||
```csharp
|
||
// 注册监听
|
||
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(服务器事件)
|
||
|
||
```csharp
|
||
// 在Manager中注册
|
||
HFFunCatalogue.Event.STCEvent.AddListener<HFEvent_STC_PlayerInfo>(
|
||
enHFSTCEvent.PlayerInfo, OnPlayerInfo);
|
||
```
|
||
|
||
> **注意**:UI窗口中不监听STCEvent,应在Logic层Manager中监听。
|
||
|
||
---
|
||
|
||
## 三、事件参数回收
|
||
|
||
### 3.1 使用对象池
|
||
|
||
```csharp
|
||
// 获取事件参数(从对象池获取)
|
||
HFEvent_CTC_PlayerLevelUp evt = HFFunCatalogue.New<HFEvent_CTC_PlayerLevelUp>();
|
||
evt.playerId = 1;
|
||
evt.newLevel = 10;
|
||
|
||
// 触发事件(事件系统会自动回收)
|
||
HFFunCatalogue.Event.CTCEvent.Dispatch(evt);
|
||
```
|
||
|
||
---
|
||
|
||
**版本**: v1.0
|
||
**适用范围**: GiftGameX项目业务开发人员 |