# 5号玩家共建分支 ### TODO LIST * [x] 网络通讯模块 * [x] 日志模块 * [x] BUTTON常规点击效果事件封装(btnPrefab脚本挂载) * [x] 层级管理 * [x] 音频管理器 * [x] UI管理器(prefab资源及prefab生成的组件和界面管理) * [x] 开发者界面(切换日志输出过滤,通过UIManager打开界面,协议流程调用,游戏逻辑功能、动画,检测牌型等) * [ ] 代码特效管理器 * [ ] 活动图标组件 * [ ] 引导系统 * [ ] 配置管理工具 * [ ] 资源管理器 - 基于2.4的cc.AssetManager的加载封装 - 更加方便的接口调用,只实现了三个接口: - preload 预加载 - getAssetAsyn 异步取资源 - getAsset 同步取资源 - 强预加载实现(引擎的预加载接口为弱预加载),为首次呈现游戏提供无缝体验支持,且支持进度监测 ### NOTE * proto_bundle 不能导入为插件 * ```javascript // var $protobuf = require("protobufjs/minimal");
var $protobuf = protobuf; ``` * ```typescript // import * as $protobuf from "protobufjs";
import * as $protobuf from "./protobuf"; ``` * 定义自定义数组 ```typescript @property(cc.Button) btnArr:cc.Button[] =[]; ``` * 定义自定义类型 **自定义类型** ```typescript enum E_POKER_SUIT { NONE, DIAMONDS, CLUBS, HEARTS, JOKER } @ccclass class pokerSprFra{ @property(cc.SpriteFrame) [E_POKER_SUIT.DIAMONDS]:cc.SpriteFrame = null; @property(cc.SpriteFrame) [E_POKER_SUIT.HEARTS]:cc.SpriteFrame = null; @property(cc.SpriteFrame) [E_POKER_SUIT.SPADES]:cc.SpriteFrame = null; constructor() {} } ``` **使用自定义类型** ```typescript @property({type:pokerSprFra}) sprFr_Dic = {}; ``` * 定义getter setter ```typescript private _state: E_CONTROL_PANEL_STATE; @property get state () { return this._state; } set state (value: E_CONTROL_PANEL_STATE) { this._state = value; this.changeStatus(value) } ``` --- ### VSCODE 快捷键 * Shift + Alt + Down/Up 复制光标所在行,并根据操作方向粘贴到临近位置 * 格式化代码: Alt + Shift + F (格式化后保存提交,确保代码格式一致,提高可读性) --- ### 命名规范 * 语法顺序 - 驼峰命名 - 形容词在前,主语在后 e.g. prettyGirl - 下划线命名(少用) - 主语在前,形容词在后 e.g. girl_pretty - 帕斯卡命名 - 同驼峰 * 适用类型 - 类名, prefab, scene 等使用[帕斯卡命名法] e.g. GameScene - 方法名, 变量名 等使用[驼峰命名法] e.g. getGameScene - 常量 使用[下划线命名法](全大写, enum以E开头,type以T开头) e.g. ``` typescript enum E_HAIR_STYLE type T_HAIR_STYLE ``` - 特殊情况 - 私有变量 e.g. mName - 静态私有变量 e.g. sName ### 框架说明 * 解耦规范: + 具体挂载UI节点的view类只关注该节点UI相关操作, 以及对事件的处理逻辑, 所有需要的非UI节点数据依赖注入(原则上“挂载UI节点的view类”仅被相应的Mediator类引用)。 + View 类对其他所有类无感知(主场景和强关联的组件除外 e.g. DdzGameScene; list与item), 目的是让UI组件及脚本方便移植可复用。 * 名词解释 + PM:Play Moudle, 与大厅模块相对应的游戏模块 * 列表视图 + 列表继承 PM_UI_List + 列表项脚本继承 PM_Abs_UI_ListItem ### 项目代码目录结构 * Script + command + component(视图组件) - listitem(列表项组件) + componentScript(为视图组件提供行为的脚本组件) + devTool + facade + global + manager + mediator + model + net + pb + plugin(三方库) ### 子游戏bundle加载流程 * 大厅loadBundle,实例化预制体 * 预制体挂在场景脚本组件onLoad,初始化mvc框架