From 847283939485ed5dc47634c7def78e7df305c2f6 Mon Sep 17 00:00:00 2001 From: ALEXTANG <574809918@qq.com> Date: Mon, 10 Jul 2023 13:51:32 +0800 Subject: [PATCH] [+] Books --- Books/3-1-资源模块.md | 11 +++ Books/3-3-内存池模块.md | 5 ++ Books/3-4-对象池模块.md | 2 + Books/3-5-UI模块.md | 114 +++++++++++++++++++++++++++++- Books/3-6-配置表模块.md | 50 ++++++++++++- Books/3-7-流程模块.md | 17 +---- Books/src/3-1-1.png | Bin 0 -> 227129 bytes Books/src/3-1-2.png | Bin 0 -> 185128 bytes Books/src/3-3-1.png | Bin 0 -> 322685 bytes Books/src/3-5-1.png | Bin 0 -> 64717 bytes Books/src/3-5-2.png | Bin 0 -> 100576 bytes Books/src/3-5-3.png | Bin 0 -> 70133 bytes Books/src/3-5-4.png | Bin 0 -> 116905 bytes Books/src/3-6-1.png | Bin 0 -> 18001 bytes Luban/gen_code_bin_to_project.bat | 17 +++++ 15 files changed, 198 insertions(+), 18 deletions(-) create mode 100644 Books/src/3-1-1.png create mode 100644 Books/src/3-1-2.png create mode 100644 Books/src/3-3-1.png create mode 100644 Books/src/3-5-1.png create mode 100644 Books/src/3-5-2.png create mode 100644 Books/src/3-5-3.png create mode 100644 Books/src/3-5-4.png create mode 100644 Books/src/3-6-1.png create mode 100644 Luban/gen_code_bin_to_project.bat diff --git a/Books/3-1-资源模块.md b/Books/3-1-资源模块.md index f72968ed..f292fd55 100644 --- a/Books/3-1-资源模块.md +++ b/Books/3-1-资源模块.md @@ -1,6 +1,17 @@ ## 3-1.资源模块 - ResourceModule 资源模块运行模式有EditorSimulateMode、OfflinePlayMode以及HostPlayMode 编辑器模式下以顶部导航栏的选项卡为优先选项,打包后以Scene场景中ResourceModule脚本的Enum选项卡为优先选项(打包后不会走EditorSimulateMode) + +cene窗口Resource对象可以设置一些资源模块的常用设置,比如打包后的资源模式、资源校验等级以及自动卸载资源间隔等。 +![image](src/3-1-1.png) + +Menu窗口TEngineSetting可以设置一些资源模块的热更新设置,比如资源服务器地址以及在线参数等。备注在Luban目录下有一个基于Node的静态文件服务器,可以把在线参数以及AB放入用于做热更新测试。 +![image](src/3-1-2.png) + + + +常用接口 +remark:资源模块初始化的生命周期已经在流程模块实现了,具体有需求可以自定义开发。 ``` csharp /// /// 获取当前资源包版本。 diff --git a/Books/3-3-内存池模块.md b/Books/3-3-内存池模块.md index be428926..c887ea93 100644 --- a/Books/3-3-内存池模块.md +++ b/Books/3-3-内存池模块.md @@ -1,4 +1,9 @@ ## 3-3.内存池模块 - MemoryPool +内存池更为轻量化,相对于对象池更适合一些更抽象碎片化的内存对象。 + +Scene窗口MemoryPool对象可以设置内存池检查,防止回收问题与内存泄漏问题。 +![image](src/3-3-1.png) + 使用案例 ``` csharp /// diff --git a/Books/3-4-对象池模块.md b/Books/3-4-对象池模块.md index b7b46aee..944fa11a 100644 --- a/Books/3-4-对象池模块.md +++ b/Books/3-4-对象池模块.md @@ -1,4 +1,6 @@ ## 3-4.对象池模块 - ObjectModule +对象池较中量级,在客户端开发中是一个经常使用的技术,技术点我相信大家都懂,这里不过多讨论。 + 使用案例 ``` csharp /// diff --git a/Books/3-5-UI模块.md b/Books/3-5-UI模块.md index 64dc083d..33783ab8 100644 --- a/Books/3-5-UI模块.md +++ b/Books/3-5-UI模块.md @@ -1,5 +1,115 @@ ## 3-5.UI模块 - UIModule -使用案例 -``` csharp +一个游戏70%都是UI,剩下30%才是GamePlay,所以有一套简洁强大的商业化UI模块以及UI开发工作流将是项目的一大利器,能够提高至少一倍的开发效率。 +UI脚本为纯C#实现,脱离Mono的生命周期,由UIModule的帧更新驱动并管理UI的生命周期。 + +IUIBehaviour为UI通用行为接口、UIBase为UI基类、UIWindow为UI窗口基类,UIWidget为UI组件基类。 + +### 前期配置: +注意!!!!m_item节点为特殊节点表示是UI下的UIWidget组件,不会继续往下遍历生成UI代码。若需要这个UIWidget组件m_item的代码则在m_item右键生成这个组件的UI脚本。 + +Scene窗口下右键ScriptGenerator菜单下About目录有默认UI命名前缀规范。 +![image](src/3-5-1.png) + +有自定义需求可以在TEngineSetting下进行自定义。 +![image](src/3-5-2.png) +### 开发工作流: +1.遵守前期默认配置或者自定义配置进行UI编排 +![image](src/3-5-3.png) + +2.在UI的根节点右键ScriptGenerator生成UI代码到剪贴板上!!! +![image](src/3-5-4.png) + +3.自行创建UI脚本到需要的目录下并复制UI脚本。 + +举例 +``` csharp +namespace GameLogic +{ + /// + /// BattleMainUI面板 + /// UIWindow需要以下特性,UILayer可以自行定义,fullScreen表示为全屏面板会停止和隐藏这个面板堆栈后面的面板。 + /// + [Window(UILayer.Bottom,fullScreen:true)] + class BattleMainUI : UIWindow + { + private TouchMove m_touchView; + + #region 脚本工具生成的代码 + private RectTransform m_rectContainer; + private GameObject m_itemTouch; + private Button m_btnLeaveBattle; + private GameObject m_goTopInfo; + private Button m_btnPause; + public override void ScriptGenerator() + { + m_rectContainer = FindChildComponent("m_rectContainer"); + m_itemTouch = FindChild("m_rectContainer/m_itemTouch").gameObject; + m_btnLeaveBattle = FindChildComponent