Skip to content

Latest commit

 

History

History
52 lines (40 loc) · 2.73 KB

模块结构说明.md

File metadata and controls

52 lines (40 loc) · 2.73 KB

项目模块结构说明

为了 易于团队协助方便业务扩展复用业务逻辑,项目采用模块结构思想。如一般可以分为以下模块:

  • 登录模块
  • 大厅模块
  • 游戏战斗模块
  • 每日签到模块
  • 邮件系统模块
  • 聊天系统模块
  • ...

为了方便同一时刻团队能同时开发多个UI界面等,项目采用 单场景 + 多Prefab 结构,场景主要用于挂载不同模块的UI界面,每个模块的UI界面由相应模块的 Prefab 组成。

一、模块组成

  • 模块常量类:负责定义由该模块产生的各种常量
  • 模块事件类:负责定义由该模块产生的各种事件消息
  • 模块数据类:负责保存和读取数据,基本上没有任何其它逻辑
  • 模块逻辑类:负责游戏逻辑,包括网络通信、数据处理等,并负责更新数据类中的数据
  • 模块面板类:负责界面UI显示,关联UI的Prefab。可以读取数据类中的数据,以刷新UI界面;可调用模块类中的方法,做出各种处理

二、模块命名规则

  • 模块文件夹名:XXX
    • 模块常量类名:XXXConst.ts
    • 模块事件类名:XXXEvent.ts
    • 模块数据类名:XXXModel.ts
    • 模块逻辑类名:XXXModule.ts
    • 模块面板类名:XXXPanelPrefab.ts

三、模块约束

在每一个模块中:

  • 模块逻辑类模块数据类 有且只有 一个
  • 模块逻辑类 是全局可以访问
  • 模块面板类 可以有 多个
  • 模块面板类 可以直接通过面板路由器进行展示、隐藏、销毁(gg.panelRouter.show/hide/destroy)
  • 模块面板类 可以直接引用/使用所有模块的 模块逻辑类
  • 模块面板类 自身不应该被任意的 模块逻辑类模块数据类 引用(如:不能直接通过 模块逻辑类 直接操作某个模块的面板类),以便于移植 “除面板以外的模块和数据” 到其它项目使用。如: 同一公司的登录、聊天、背包等大部分是可以复用的
  • 模块面板类 的UI更新可以通过在 Component 的 onEnableonDisable 去注册/注销 模块事件类所定义的事件。当数据更新、逻辑变化时,广播事件以驱动UI更新

四、新增一个模块的步骤流程(参考)

  1. 在合适的 bundle 中新建模块名字命名的目录,如 XXX
  2. XXX 目录下创建以下文件
    • XXXConst.ts(可选,如果有模块自己本身产生的常量,有则需要)
    • XXXEvent.ts(可选,如果有模块自己本身产生的事件,则需要)
    • XXXModel.ts(必须)
    • XXXModule.ts(必须)
    • XXXPanelPrefab.ts(可选,如果有面板显示,则需要)