From 75687450ad085ed179dc374160b15e348b54eeb9 Mon Sep 17 00:00:00 2001 From: Shiliang Date: Fri, 22 May 2026 13:36:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0UI=E7=BB=84=E4=BB=B6=E5=91=BD?= =?UTF-8?q?=E5=90=8D=E8=A7=84=E8=8C=83=EF=BC=9A=E5=8F=98=E9=87=8F=E5=90=8D?= =?UTF-8?q?=E4=B8=8E=E7=BB=84=E4=BB=B6=E5=90=8D=E4=BF=9D=E6=8C=81=E4=B8=80?= =?UTF-8?q?=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 03_核心功能/UI事件绑定指南.md | 31 ++++++++++++++++++++++--------- 03_核心功能/UI窗口开发指南.md | 29 +++++++++++++++++++++++++++-- 03_核心功能/UI组件使用指南.md | 29 +++++++++++++++++++++-------- 3 files changed, 70 insertions(+), 19 deletions(-) diff --git a/03_核心功能/UI事件绑定指南.md b/03_核心功能/UI事件绑定指南.md index 3f5a1eb..7e2791a 100644 --- a/03_核心功能/UI事件绑定指南.md +++ b/03_核心功能/UI事件绑定指南.md @@ -7,15 +7,20 @@ ```csharp public class LoginWindow : AbsHFUIWindow { - [SerializeField] private SFUI_Button btn_Login; + private SFUI_Button BtnLogin; protected override void OnRunAwake() { base.OnRunAwake(); // OnRunAwake: 初始化组件引用和按钮事件绑定(仅调用一次) - btn_Login.OnAddClickListener += OnBtnLogin; - btn_Login.OnAddEnterListener += OnBtnEnter; - btn_Login.OnAddExitListener += OnBtnExit; + BtnLogin = FindUICtrlByName("BtnLogin"); + + if (BtnLogin != null) + { + BtnLogin.OnAddClickListener += OnBtnLoginClick; + BtnLogin.OnAddEnterListener += OnBtnLoginEnter; + BtnLogin.OnAddExitListener += OnBtnLoginExit; + } } protected override void OnOpen(Action _onOpenComplete) @@ -28,13 +33,21 @@ public class LoginWindow : AbsHFUIWindow protected override void OnClose(Action _onCloseComplete) { - base.OnClose(_onCloseComplete); - // OnClose: 移除CTC事件监听(每次关闭调用) + // OnClose: 移除事件监听(每次关闭调用) + if (BtnLogin != null) + { + BtnLogin.OnAddClickListener -= OnBtnLoginClick; + BtnLogin.OnAddEnterListener -= OnBtnLoginEnter; + BtnLogin.OnAddExitListener -= OnBtnLoginExit; + } + HFFunCatalogue.Event.CTCEvent.RemoveListener( enHFCTCEvent.LoginResult, OnLoginResult); + + base.OnClose(_onCloseComplete); } - void OnBtnLogin(GameObject go) + void OnBtnLoginClick(GameObject go) { // 处理登录逻辑 - 使用框架标准调用方式 HFEvent_CTC_Login evt = HFFunCatalogue.New(); @@ -43,12 +56,12 @@ public class LoginWindow : AbsHFUIWindow evt.Dispatch(); } - void OnBtnEnter(GameObject go) + void OnBtnLoginEnter(GameObject go) { // 鼠标进入 } - void OnBtnExit(GameObject go) + void OnBtnLoginExit(GameObject go) { // 鼠标退出 } diff --git a/03_核心功能/UI窗口开发指南.md b/03_核心功能/UI窗口开发指南.md index 08a8b61..350a928 100644 --- a/03_核心功能/UI窗口开发指南.md +++ b/03_核心功能/UI窗口开发指南.md @@ -9,10 +9,26 @@ [HFUIWindowLayer(enHFUICanvasLayer.UIWindow, enHFUIWindowLayer.Dynamic, isIgnoreCloseByESC = false)] public class LoginWindow : AbsHFUIWindow { + // ========== UI组件 ========== + private SFUI_Button BtnLogin; + private SFUI_InputField InputName; + private SFUI_InputField InputPassword; + private SFUI_TextMeshProUGUI TxtTitle; + protected override void OnRunAwake() { base.OnRunAwake(); - // 初始化UI组件引用 + // 初始化UI组件引用(变量名与组件名保持一致) + BtnLogin = FindUICtrlByName("BtnLogin"); + InputName = FindUICtrlByName("InputName"); + InputPassword = FindUICtrlByName("InputPassword"); + TxtTitle = FindUICtrlByName("TxtTitle"); + + // 绑定按钮事件 + if (BtnLogin != null) + { + BtnLogin.OnAddClickListener += OnBtnLoginClick; + } } protected override void OnOpen(Action _onOpenComplete) @@ -23,8 +39,17 @@ public class LoginWindow : AbsHFUIWindow protected override void OnClose(Action _onCloseComplete) { - base.OnClose(_onCloseComplete); // 取消事件监听 + if (BtnLogin != null) + { + BtnLogin.OnAddClickListener -= OnBtnLoginClick; + } + base.OnClose(_onCloseComplete); + } + + private void OnBtnLoginClick(GameObject go) + { + // 处理登录逻辑 } } ``` diff --git a/03_核心功能/UI组件使用指南.md b/03_核心功能/UI组件使用指南.md index dd3208c..1382d4a 100644 --- a/03_核心功能/UI组件使用指南.md +++ b/03_核心功能/UI组件使用指南.md @@ -107,14 +107,27 @@ void OnScrollValueChanged(Vector2 value) ### 2.1 命名规则 -| 组件类型 | 前缀 | 示例 | -|---------|------|-----| -| SFUI_Button | btn | btn_Login | -| SFUI_Text | txt | txt_Title | -| SFUI_Image | img | img_Avatar | -| SFUI_Toggle | toggle | toggle_Select | -| SFUI_ScrollRect | scroll | scroll_Content | -| SFUI_InputField | input | input_Name | +变量名直接使用组件名,保持与 Unity 编辑器中组件名称一致。 + +| 组件类型 | 示例 | +|---------|-----| +| SFUI_Button | BtnLogin | +| SFUI_Text | TxtTitle | +| SFUI_Image | ImgAvatar | +| SFUI_Toggle | ToggleSelect | +| SFUI_ScrollRect | ScrollContent | +| SFUI_InputField | InputName | + +**命名约定**: +- 变量名 = 组件名(保持完全一致) +- 首字母大写,采用 PascalCase 命名风格 + +**使用示例**: +```csharp +BtnLogin = FindUICtrlByName("BtnLogin"); +TxtTitle = FindUICtrlByName("TxtTitle"); +ImgAvatar = FindUICtrlByName("ImgAvatar"); +``` ### 2.2 层级结构