一.基本原则
1:不要在场景上添加很多节点,最好把每个节点独立出去
原因1:游戏场景很多内容都放场景里面,如果场景上放了两个界面,是不同的两个人开发的,两个人同时都有可能修改我们的场景文件,场景文件合并与冲突的时候比较麻烦。
原因2:场景内容越多,场景打开、编辑的时候,反应越慢。
原因3:不利于多人协同开发,把数据都揉在一起,找东西麻烦。
2:节点或预制体不要挂代码,也不要挂载其他资源,不要在编辑器里关联我们的代码数据;
原因1:维护代码麻烦,当你要查找某个组件在哪里被调用的时候,你要一个一个节点点开看,一个一个预制体点开看;组件的绑定和解绑由代码统一掌控,方便维护。
原因2:经常由于编辑器的一些BUG,导致挂的代码突然不见;
原因3:编辑器版本升级时候会出现一些问题
原因4:节点内挂载其他资源的话,资源名称被改动后要重新绑定一下
原因5:不利于多人协同开发,美术可能会编辑这个节点,他们看到挂载的代码会比较困惑;
把美术试图和代码逻辑彻底分开了,才方便同时开发
3:运行的时候所使用的场景是空的(不放任何具体内容〕
二.目录结构(这个不是固定的,大家可以根据自己习惯调整)
AssetPackage:用来存放我们的资源
Scenes:用来存放场景
Scripts:存放游戏代码【游戏框架代码(可重用)+业务逻辑代码(部分重用)】
-Framework:通用框架代码
-Utils:通用工具类代码
-Mgrs:管理器(资源管理,事件订阅与发布,声音管理,UI管理,网络管理,协议管理)
-Components:通用组件
-Game: 业务逻辑代码(类似MVC)
>GameApp.ts:游戏逻辑的入口(EnterGame函数)
-UIControllers(预制体对应的控制代码,写预制体界面的UI逻辑)
-datas(界面上用来显示的数据)
-Mgrs(管理器)
>NetDataManager.ts
>excelDataManager.ts
>xmlDataManager.ts
-excelData(excel配置数据文件)
-xmlData(xml配置文件)
-netData(缓存网络数据,每个data是一个单例,封装消息的发送和接受函数)
-3rd:第三方代码
>protobuf.js
>GameLaunch.ts:游戏启动代码(挂载到启动场景中的GameApp节点下)