diff --git a/Books/0-介绍.md b/Books/0-介绍.md index cf03422a..9ad024b6 100644 --- a/Books/0-介绍.md +++ b/Books/0-介绍.md @@ -23,7 +23,7 @@ TEngine是一套用于Unity框架解决方案,用于帮助研发团队快速 开箱即用、用法简洁,即用即上手.高可读性和详细的文档说明帮助你更快更好的进行游戏开发。您不需要关心框架的底层,分离独自实现您的GamePlay。 ### 性能强大 -TEngine 底层使用多线程管理与线程间的通信以及事件分发,可插件定制化,把复杂游戏简单化切以高性能、低耦合度实现。 +TEngine 底层使用基于UniTask的异步以及事件分发,可插件定制化,把复杂游戏简单化切以高性能、低耦合度实现。 ### 高内聚低耦合 -内嵌了The Best 次时代热更新解决方案HybridCLR、百万DAU验证的资源解决方案YooAsset +内嵌了The Best 次时代热更新解决方案HybridCLR、百万DAU验证的资源解决方案YooAsset、你的游戏最佳配置解决方案Luban diff --git a/Books/2-框架概览.md b/Books/2-框架概览.md index 5f99f965..effe7c02 100644 --- a/Books/2-框架概览.md +++ b/Books/2-框架概览.md @@ -63,7 +63,7 @@ Assets/GameScripts ``` 游戏内主要玩法逻辑包括UI会在GameLogic中编写,GameBase则存放一些通用性的逻辑,GameProto存放与服务区交互的协议以及配置表逻辑,BattleCore为帧同步分离的逻辑层做预留。若有项目需求完全可以进行自定义增删HotFix程序集。 -PS:注意增删程序集后需要同步到HybridClr的Setting面板以及TEngineSetting的面板。 +PS:注意增删程序集后需要同步到HybridClr的Setting面板以及TEngineSetting的面板。TEngineSettings面板有按钮可以从HybridClr中同步AOT与热更程序集。 ## 常用模块接口 diff --git a/Books/3-1-资源模块.md b/Books/3-1-资源模块.md index 2ec94d4e..330429d6 100644 --- a/Books/3-1-资源模块.md +++ b/Books/3-1-资源模块.md @@ -1,4 +1,7 @@ ## 3-1.资源模块 - ResourceModule + +#### 资源模块默认使用Addressable可寻址定位。(!注意需要打包的资源不可以重名) + 资源模块运行模式有EditorSimulateMode、OfflinePlayMode以及HostPlayMode 编辑器模式下以顶部导航栏的选项卡为优先选项,打包后以Scene场景中ResourceModule脚本的Enum选项卡为优先选项(打包后不会走EditorSimulateMode) @@ -18,7 +21,9 @@ Menu窗口TEngineSetting可以设置一些资源模块的热更新设置,比 * ArcCacheTable (Adaptive Replacement Cache缓存表) ## 加载资源示范 +注意!资源模块默认使用Addressable可寻址定位。传入资源名字无需后缀即可!! ``` csharp + //同步加载。 GameModule.Resource.LoadAsset(location); diff --git a/Books/3-2-事件模块.md b/Books/3-2-事件模块.md index 5261f9dc..def3d55b 100644 --- a/Books/3-2-事件模块.md +++ b/Books/3-2-事件模块.md @@ -1,4 +1,4 @@ -## 3-2.事件模块 - GameEvent +# 3-2.事件模块 - GameEvent 高效且无GC的事件系统GameEvent,可以指定事件ID/事件String监听和分发事件。通过事件来驱动模块,如战斗的角色身上的事件流、UI和网络以及Model的数据流、开发中的绝大部分情况都可以通过事件来进行驱动。(配合UI模块或者拓展的战斗模块实现MVE[Model - View - Event]事件驱动架构) 事件模块支持string和int作为事件Id,但推荐是使用int因为可以避免事件字典的哈希碰撞。这里实现了StringId.StringToHash的方法来定义事件ID达到事件系统的最佳性能。 diff --git a/Books/3-3-内存池模块.md b/Books/3-3-内存池模块.md index c887ea93..74c52f52 100644 --- a/Books/3-3-内存池模块.md +++ b/Books/3-3-内存池模块.md @@ -1,4 +1,4 @@ -## 3-3.内存池模块 - MemoryPool +# 3-3.内存池模块 - MemoryPool 内存池更为轻量化,相对于对象池更适合一些更抽象碎片化的内存对象。 Scene窗口MemoryPool对象可以设置内存池检查,防止回收问题与内存泄漏问题。 diff --git a/Books/3-4-对象池模块.md b/Books/3-4-对象池模块.md index 944fa11a..62159d9a 100644 --- a/Books/3-4-对象池模块.md +++ b/Books/3-4-对象池模块.md @@ -1,4 +1,4 @@ -## 3-4.对象池模块 - ObjectModule +# 3-4.对象池模块 - ObjectModule 对象池较中量级,在客户端开发中是一个经常使用的技术,技术点我相信大家都懂,这里不过多讨论。 使用案例 diff --git a/Books/3-5-UI模块.md b/Books/3-5-UI模块.md index 149fc7ec..06bf04b2 100644 --- a/Books/3-5-UI模块.md +++ b/Books/3-5-UI模块.md @@ -1,11 +1,11 @@ -## 3-5.UI模块 - UIModule +# 3-5.UI模块 - UIModule 一个游戏70%都是UI,剩下30%才是GamePlay,所以有一套简洁强大的商业化UI模块以及UI开发工作流将是项目的一大利器,能够提高至少一倍的开发效率。(配合事件模块实现MVE[Model - View - Event]事件驱动架构) 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命名前缀规范。 @@ -22,7 +22,7 @@ Scene窗口下右键ScriptGenerator菜单下About目录有默认UI命名前缀 3.自行创建UI脚本到需要的目录下并复制UI脚本。 -举例 +## 举例示范 ``` csharp // 同步打开面板 GameModule.UI.ShowUI([nullable]userData); @@ -118,4 +118,9 @@ namespace GameLogic ...... } } -``` \ No newline at end of file +``` + +## UI进阶 +UI面板需要标记UIWindowAttribute,以标识层级(可以自行定义)和是否全屏。全屏面板则会把下层面板的Visible设置为false。 +![image](src/3-5-5.png) + diff --git a/Books/3-6-配置表模块.md b/Books/3-6-配置表模块.md index 9523829f..b037027f 100644 --- a/Books/3-6-配置表模块.md +++ b/Books/3-6-配置表模块.md @@ -1,8 +1,13 @@ -## 3-6.配置表模块 - ConfigLoader +# 3-6.配置表模块 - ConfigLoader 接入最佳游戏配置解决方案 - Luban Luban文档 +### 在TEngine中Luban工具集位于以下目录 +![image](src/3-6-1.png) + +TEngine内置默认使用懒加载配置,也支持基于UniTask的异步加载,同步加载,包括服务器的Task异步加载,使用对应转表的bat即可。 + ### 介绍 luban是你的最佳游戏配置解决方案。 @@ -23,8 +28,6 @@ luban统一了游戏配置开发工作流,极大提升了策划和程序的工 --- -### 在TEngine中Luban工具集位于以下目录 -![image](src/3-6-1.png) 使用案例 ``` csharp diff --git a/Books/3-7-流程模块.md b/Books/3-7-流程模块.md index 87662ecb..dfee91d9 100644 --- a/Books/3-7-流程模块.md +++ b/Books/3-7-流程模块.md @@ -1,4 +1,4 @@ -## 7.流程模块 - ProcedureModule +# 7.流程模块 - ProcedureModule ### ProcedureLaunch - 流程启动 diff --git a/Books/3-8-网络模块.md b/Books/3-8-网络模块.md index 0ea28ca8..8e746b97 100644 --- a/Books/3-8-网络模块.md +++ b/Books/3-8-网络模块.md @@ -1,2 +1,2 @@ -## 8.网络模块 - Network +# 8.网络模块 - Network 待补充 \ No newline at end of file diff --git a/Books/99-各平台运行RunAble.md b/Books/99-各平台运行RunAble.md index 0db0cabf..5bb19bf3 100644 --- a/Books/99-各平台运行RunAble.md +++ b/Books/99-各平台运行RunAble.md @@ -1,4 +1,4 @@ -# TEngine +# TEngine各平台下运行 ### 日志记录编辑器下运行 ![image](src/Editor-RunSuccessed.png) diff --git a/Books/src/3-5-5.png b/Books/src/3-5-5.png new file mode 100644 index 00000000..12a11866 Binary files /dev/null and b/Books/src/3-5-5.png differ diff --git a/Books/src/3-6-1.png b/Books/src/3-6-1.png index 6380e2a6..28a4fc93 100644 Binary files a/Books/src/3-6-1.png and b/Books/src/3-6-1.png differ diff --git a/README.md b/README.md index 3e2d84ce..4c90446c 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ # TEngine -#### TEngine是一个简单(新手友好开箱即用)且强大的Unity框架解决方案,对于需要一套上手快、文档清晰、高性能且可拓展性极强的商业级解决方案的开发者或者团队来说是一个很好的选择。 +#### TEngine是一个简单(新手友好开箱即用)且强大的Unity框架全平台解决方案,对于需要一套上手快、文档清晰、高性能且可拓展性极强的商业级解决方案的开发者或者团队来说是一个很好的选择。 ## 文档快速入门 » @@ -50,10 +50,10 @@ ## 为什么要使用TEngine 0. 开箱即用5分钟即可上手整套开发流程,代码整洁,思路清晰,功能强大。高内聚低耦合。您可以很轻易的把您不需要的模块进行移除替换。 -1. 严格按照商业要求使用次世代的HybridClr进行热更新、强大的Luban配置表、百万DAU游戏验证过的YooAsset资源框架,全平台热更新流程已跑通。 +1. 严格按照商业要求使用次世代的HybridClr进行热更新、最佳的Luban配置表(TEngine支持懒加载、异步加载、同步加载配置。)、百万DAU游戏验证过的YooAsset资源框架(框架管理资源引用与释放。),全平台热更新流程已跑通。 2. 严格按照商业化流程执行的热更新、商业化的UI开发流程、以及资源管理等等,设计并实现了YooAsset资源自动释放、支持LRU、ARC严格管理资源内存。 -3. C#双端解决方案,服务器使用Fantasy,是一套源于ETServer但极为简洁,性能更强,更好上手的一套商业级服务器框架。 -4. 已有项目使用TEngine上架Steam、Wechat-minigame、AppStore。 +3. C#双端解决方案,服务器使用Fantasy,是一套源于ETServer,但极为简洁,性能更强,更好上手的一套商业级服务器框架。 +4. 支持全平台,已有项目使用TEngine上架Steam、Wechat-minigame、AppStore。 ## 资源重要拓展概念 * AssetReference (资源引用标识) 通用加载资源的时候绑定一个引用标识使你无需关心手动Dispose资源句柄。