# openJuniorCC **Repository Path**: firekid/open-junior-cc ## Basic Information - **Project Name**: openJuniorCC - **Description**: 适用于初学者的cocos引擎架构。 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2024-04-17 - **Last Updated**: 2025-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # openJuniorCC,一个融入了***依赖注入***的mvc框架 ## 介绍 适用于初学者的cocos引擎架构。 ### 软件架构 软件架构说明 ## 游戏流程 - 主场景是main.scene,挂有脚本组件Main.ts。main.scene里面的ui_root为ui根结点,ui分为多层,分别为scene, menu, full, tips, top层。 - Main的Start方法,调用了App.init方法和App.Start方法。 - App.init方法,初始化各个管理器。其中moduleMgr会调用各个模块的初始化。 - App.start方法,调用loadingMgr的startLoading方法。 - LoadingMgr.ts中的startLoading方法,loadBundle加载公共bundle,loadPublic加载公共资源,loadingConfig加载配置。 ``` LoadingBundle,现有的公共的bundle有public,jszip,config。 LoadingPublic,配置LoadingPublic的_arr数组,即可加载公共资源,。 ``` - LoadingMgr全部加载完成后,接着会调用GameLogic.ts中的onLoadingMgrCompleted方法,可在这里选择打开游戏主界面。 ## 框架 - 哪些文件夹会被设置成bundle ``` 1. config文件夹。 2. modules下面的各个文件夹。 3. public文件夹。 4. third下面的jszip文件夹。 ``` - BundleMgr ``` 保存公共的bundle ``` - ConfigMgr ``` 获取配置。 1. config.bin文件是压缩文件,可以解压缩。这个文件也是将多个json一起压缩后,改文件后缀为.bin而得。 2. 利用tools/策划配置目录下面的ConfigConverter.exe可以将一定格式的excel转换为对应的json。ConfigConverter.exe最多可以输出到四个不同的目录,如果要输出到同一个目录,设置同一个目录即可。 3. 配置通过LoadingConfig加载(LoadingMgr内的逻辑,已自动完成),加载的是config文件下面的config.bin文件。之后,可以通过App.ins.configMgr的getConfig()方法获取,参数名为配置json的文件名。 ``` - EventMgr ``` mvc框架必须要实现的事件机制。on方法监听事件,off方法取消监听,dispatch方法派发事件。 App.ins.eventMgr.on(); App.ins.eventMgr.off(); App.ins.eventMgr.dispatch(); ``` - LoadingMgr ``` 游戏开始后的,加载公共的bundle,公共资源和配置等。 ``` - ModuleMgr ``` 模块管理器,可以向ModuleMgr注册一个模块。 ``` - ResMgr ``` 资源管理器。加载bundle,加载单张图片,加载图集,加载预制体等。 ``` - TimerMgr ``` setInterval方法设置定时器,每隔一定时间执行一次。setTimeout,隔一定时间后执行一次。 ``` - ViewMgr ``` 界面管理器,负责打开界面和关闭界面。 ``` ## UI框架 ### MVC(加入了!!依赖注入!!的设计思想) #### module(模块),control(控制器),model(模型),viewCtrl(界面控制器),view(界面)。 - module(模块)。每个功能模块都有一个module,名字后缀为Module,这是一个模块的容器。每个模块都有一个control和model。模块的初始化方法可以向ViewMgr注册自己模块的界面控制器和界面控制器所依赖对象。 - viewCtrol(界面控制器)。每个界面都有一个界面控制器,名字后缀为ViewCtrl,或Ctrl,继承自ViewCtrlBase类,负责加载界面要用到的图集,界面的预制体prefab,实例化预制体,监听按钮的点击事件,监听node事件,监听全局事件。界面控制器也负责界面复杂的数据处理和调用界面的刷新逻辑。 - view(界面)每个界面都有一个预制体prefab,挂有一个继承自ViewComponent类的脚本。一个界面对应一个view类,名字后缀为View,负责展示模型的数据,数据可能是经过界面控制类处理过的。view类也负责自己的界面刷新逻辑,但通常自己不调用这些逻辑,而是由界面控制类调用。 - control(控制器)。界面控制器的公用逻辑(适用于多个界面的逻辑)或外部模块也适用的逻辑放在这里。 - model(模型)。保存服务器的数据和客户端的数据,负责与服务器通讯。