我发现先把项目结构做个梳理有利于后面的学习,所以就整理了这篇笔记

由于我能力有限,可能有些地方理解的不对,恳请各路大大指正,感激不尽

使用Rider编译器打开项目,并把项目视图调整为Solution

下面是更加详细的部分

1.Book:没看过ET Book的小伙伴应该去看看,写的非常好,这些是示例代码,不在本篇笔记范围内

2.Client:ET客户端代码

1.Unity.Editor  里面是ET客户端所有的编辑器拓展工具,以后开发的时候我们会经常用到

2.Unity.Hotfix 里面是热更新部分的代码,建议项目中准备热更新的代码放在这里,每次回到Unity,这个项目都会被处理成dll文件放到Res/Code文件夹下面,等待使用

详情

Base 主要为组成ET客户端框架的基础类

  • Base.Event 定义事件的种类和接口
  • Base.Helper 常用功能辅助类
  • Base.Object 包含ET中重要的事件系统,组件系统,对象池等
  • Base.Log ET的日志类

Entity 实体类

Module 主要为游戏中的功能模块

  • Module.Actor以及Module.ActorLocation ET的Actor消息机制
  • Module.Config 配置类
  • Module.Demo.UnitConfig 规定Unit的所包含的属性
  • Module.Demo.Helper 为Demo中登录和进入游戏主场景的辅助类
  • Module.Demo.UI 为Demo中的UI相关逻辑
  • Module.Demo目录下的脚本为消息处理类
  • Module.Message 包含由proto文件生成的消息类,消息缓存池,消息分发组件,Opcode组件,消息处理接口类,Session组件
  • Module.UI ET客户端的UI工厂 

Init 将会被Unity.Model所反射调用,主要进行相关组件的生成以及热更层的回调

3.Unity.Model 里面的代码不能热更新,通常将游戏中不会变动的部分放在这个项目里

详情

Base 主要为组成ET客户端框架的基础类,我们发现这里的代码有一部分和Unity.Hotfix.Base中的代码有部分是重复的,这是因为使用ILRuntime要尽量避免跨域继承,不然要写适配器什么的,比较麻烦。

Component ET客户端常用基础组件

  • Component.Config 所用到的配置格式

Entity 实体类

Helper 常用功能辅助类

ILBinding 根据Unity.Hotfix所自动生成的代码

Module 游戏中常用功能模块以及游戏主体部分

  • Module.Actor以及Moudule.ActorLocation Actor消息机制的基础
  • Module.AssetBundle AB包相关类
  • Module.Config 配置类
  • Module.Demo Demo相关类
  • Module.Demo.Config 游戏中Unit配置类 
  • Module.Demo.UI 游戏中UI的相关类,与Unity.HotFix不同,这里主要是对UI的操作,如显示,隐藏,增加组件等
  • Module.Demo的其余脚本 为游戏中所用到的组件以及相关类
  • Module.Filter 过滤器组件以及特性定义
  • Module.Message 包括网络传输协议以及各种消息传输,分发组件,辅助类,可以说是一大核心
  • Module.Numeric 数值组件
  • Module.Pathfinding 寻路组件
  • Module.UI UI相关

Other 其余定义类

Init 对框架进行初始化,增添必须的组件,启动框架

4.Unity.ThirdParty 用到的第三方插件集合

3.Server :ET服务端代码

1.ThirdParty 服务端用到的第三方库

2.APP 服务端启动入口

3.Hotfix 服务端热更新代码(至于服务端为啥需要热更,猫大和群友表示可以用来不停机更新,emmm,牛批)

Handler 服务端基础的事件处理者,包括重载Hotfix.dll实现不停机更新,ping请求,玩家消息处理等

Helper 热更新辅助类,目前里面只有一个HotfixHelper,用来依据Hotfix.dll来创建实例

Module 功能模块

  • Module.Actor以及Module.ActorLocation Actor消息机制
  • Module.Benchmark 用来做压力测试的
  • Module.Config 配置组件,和配置相关的功能都在这
  • Module.DB MongoDB数据库相关功能,包括数据保存与查询等
  • Module.Demo masterDemo的相关逻辑,主要为事件处理类,消息类
  • Module.Http Http测试类
  • Module.Message 消息组件和系统

4.Model 服务端代码(不能热更)

Base 服务器基础类,很大部分的代码是引用的Unity.Model中的代码,代码共用,厉害哦,所以下面说一下不同于Unity.Model的代码

  • Base.Logger 和NLog有关的Log类
  • Base.UnityEngine Unity的相关函数(主要是数学上的)

Component 服务器组件类,同客户端一样,也是组件式编程

Entity 实体类

Module 功能模块,与Server.Hotfix中的结构大抵类似,但代码不同,注意查看

  • Module.Demo 大部分为Demo中所用到的组件,包括移动,寻路,Session组件等
  • Module.Http Http组件

  • Module.Message 包含了消息池,网络组件,消息信息以及处理类(大多引用自Unity.Model和Unity.Hotfix)
  • Module.Pathfinding 寻路组件

Other 其余配置

4.Tools工具类 为文件服务器以及Proto自动生成CSharp功能

ET篇:master项目结构梳理相关推荐

  1. iOS SwiftUI篇-1 项目结构

    iOS SwiftUI篇-1 项目结构 介绍Xcode新建的SwiftUI模版项目结构.跟普通Storyboard模版项目的差异.SwiftUI项目的app启动流程.UIScene概念介绍.AppDe ...

  2. SpringBoot Web项目结构梳理

    摘要 讲道理,每个项目都有自己的结构,大家都各不相同,这里讲一个我比较喜欢Web项目模块结构风格,感觉还不错,整体项目结构清晰. 一.项目结构说明 项目整体结构如下: ftp_server ftp_s ...

  3. web.xml文件位于web项目的目录结构中的_看完这篇,别人的开源项目结构应该能看懂了...

    我为什么要写这篇 近来,和不少初学Spring或Spring Boot的小伙伴私信交流了关于项目目录结构划分和代码分层的问题. 很多小伙伴表示网上下载下来的开源项目看不懂,项目结构和代码分层看得很蒙, ...

  4. .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI

    作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...

  5. 看完这篇,别人的开源项目结构应该能看懂了

    我为什么要写这篇 近来,和不少初学Spring或Spring Boot的小伙伴私信交流了关于项目目录结构划分和代码分层的问题. 很多小伙伴表示网上下载下来的开源项目看不懂,项目结构和代码分层看得很蒙, ...

  6. 在阿里工作5年了,看完这篇,别人的开源项目结构应该能看懂了

    很多小伙伴表示网上下载下来的开源项目看不懂,项目结构和代码分层看得很蒙,不知道应该以一个什么样的思路去学习和吸收别人的项目. 好,今天熬夜肝了这篇文章,和大家一起来交流探讨一下,不足之处也请小伙伴们批 ...

  7. 还不懂vue-cli构建SPA项目和SPA项目结构吗?赶紧看看这一篇

    目录 一,vue-cli构建SPA项目 前提: 搭建好NodeJS环境 1.1 什么是vue-cli? 1.2. 安装vue-cli npm install -g vue-cli   npm inst ...

  8. 认识ASP.NET 5项目结构和项目文件xproj

    ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方. 我们先用 Visual Stu ...

  9. 【easyTrader源码分析1】源码结构梳理

    开篇 简单说一下为什么想写这个系列: 我个人对自动化交易比较感兴趣,他山之石,可以攻玉,搞清楚easyTrader,就搞清楚了市面上大部分自动交易方法. 实践是检验真理的唯一标准,一个无法实盘的量化交 ...

最新文章

  1. 【Android OpenGL ES】阅读hello-gl2代码(二)Java代码
  2. 浅谈C++类(1)--概念和构造函数
  3. android x86 uc,android x86 固件定制
  4. C#面试题(.net开发人员必备)
  5. java struts 介绍,Struts入门之MVC介绍
  6. V8 引擎是如何工作的?
  7. Layer 提示框tips使用
  8. 机器学习笔记(十一):优化梯度公式 | 凌云时刻
  9. 汇编指令---ROL与ROR
  10. 桂林老兵php,桂林老兵的SQLSERVER高级注入技巧
  11. 原来黑客长这样(中国大陆篇)
  12. WPS文字标题级别的设置和调整——多种方法任选
  13. java中使用jxls导出excel,excel单元格换行,多sheet页导出
  14. 三角形周长最短问题_「初中数学」从三角形周长的最值问题说说解题策略
  15. 兴业java入职考试是考什么_兴业银行考试考什么
  16. LDD3 sleepy 模块
  17. 英国某电商在线零售客户细分_Kaggle项目
  18. FILCO蓝牙CSR4.0驱动安装连接(解决蓝牙连接的终极管理方法,速度极快)
  19. 小赛毛游C记-初识C语言(2)
  20. 交通流预测爬坑记(二):最简单的LSTM预测交通流,使用tensorflow2实现

热门文章

  1. Transformers for 1D signals in Parkinson’s disease detection from gait
  2. 【Python中的】列表生成式和字典生成式以及内置函数
  3. 牛客小白月赛25 C 白魔法师 并查集
  4. 移动端多了企业还需要做seo吗
  5. RPC通信协议远程服务调用(25)Java全栈
  6. 包载信使mRNA的多西环素纳米脂质体|雷公藤红素纳米脂质体RNA核糖核酸(实验原理)
  7. 【3dsMax】如何用VSocde写最简单的MaxScript脚本
  8. 高并发下的缓存问题及布隆过滤器
  9. OSChina 周四乱弹 —— 未来人类的知识宝库
  10. (转)世界上最美丽的英文