Files
UnityAI/03_核心功能/UI事件绑定指南.md

3.5 KiB
Raw Blame History

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项目业务开发人员