ColaFrameWork Unity客户端框架
框架简介
ColaFramework 一款简洁的MVC架构的Unity客户端框架。支持Lua开发和资源热更新,自带版本管理和简易服务器。适合新手入门学习或用于中小团队开发。
关于精简版
ColaFramework内置了较多的插件,本意是借助插件提高开发速度,如果感觉插件过多造成了干扰,只想使用ColaFramework的最核心功能的话,可以使用tiny精简版。
精简版仅保留了DoTween和ToLua#这两个最基本的插件/库,当然精简版中仍然是需要Odin的。
开发计划
马三把近一个月内要开发的任务都放在本项目的敏捷开发面板中了。可以直接按照下面的方式查看看板中的开发计划与进度。
开发环境
- Unity2018.2.3
- VS2017
- C# & Lua
- 项目依赖Odin插件,出于版权原因,Odin并未集成进项目内,需要自行下载Odin并导入
安装集成
可以选择以下安装方式集成本框架:
- Clone本项目到本地,与自己的代码融合或者直接在框架基础上进行开发
配套视频教程
项目手册
项目结构
游戏启动运行流程与机制
目前框架的启动场景为:
- GameLauncher
游戏由GameLauncher启动器脚本启动。GameLauncher为一个单例类,在游戏初始化的过程中,启动器类负责初始化GameManager、InputMgr、FpsHelper、DebuglogHelper、U3DAutomation、StreamingAssetHelper、多线程工具类等一些基础的操作。
在一些必要的资源准备妥当以后,会执行InitGameCore()方法,该方法会调用GameManager的InitGameCore()方法,进一步地进行初始化一些次要的管理器与资源,并且启动Lua虚拟机,加载Lua的入口函数。 在GameLauncher类中,会主动调用GameManager的Update、LateUpdate、FixedUpdate、ApplicationQuit等类似于MonoBehaivor中的方法,这让您依然可以自由地在这些方法中进行处理自己的相应逻辑。
数据配置表管理
ColaFramework框架提供了CSV版本和原生lua版本的数据配置表管理,可以根据自己的实际需要进行选择。
详情请见数据配置表管理Wiki页面
事件/消息处理中心
框架支持C#版和Lua版两套消息监听与派发机制,可以派发消息,用于V、M和C之间的解耦和消息监听等操作。具体的实现原理和用法可以看以下这篇博客:
【Unity游戏开发】用C#和Lua实现Unity中的事件分发机制EventDispatcher
UI框架(View层)
在ColaFramework框架中通过编辑器提高UI开发效率
ColaFrameWork框架在UI开发方面提供了编辑器拓展。通过编辑器可以快速通过模版创建新的UIView类、Module类。也可以新建新的UI模版,支持C#和Lua模板。
详见Wiki页面
系统框架(Module层)
Module的基类为ModuleBase,游戏内所有的系统的业务逻辑层均继承自该类。框架采用厚Module类型的MVC结构,弱化了C层的作用,强化了M层。游戏中的业务逻辑大部分都放在M层进行处理处理。M层负责处理业务逻辑、监听网络消息、请求网络消息、派发事件通知其他模块或者UI等更新。M层不应该了解View层的存在,不可以直接调用View层,应该通过消息机制通知View做出动作。
组件与实体获取
分别支持C#端的和lua端的组件获取,详见组件与实体获取wiki页面
Execl策划表格规范与转表
本框架支持将Excel表格转为csv和lua原生格式的配置数据文件,详见Execl策划表格规范与转表Wiki页面
资源管理
AssetBundle的加载与管理是基于xasset
在上层是AssetTrackMgr和ContainerPool,内存池和资源跟踪层,它一套弱引用+引用计数原理的资源管理层
Lua层和C#业务逻辑层统一都通过AssetTrackMgr这个内存池和资源跟踪层去获取和归还对象
具体的API接口设计如下:
资源引用查找与依赖关系分析插件
简介
本插件基于blueberryzzz大佬 的 ReferenceFinder插件改造得来。感谢blueberryzzz大佬的无私分享!
这是一个用来查找资源引用和依赖的插件,通过缓存来保存资源间的引用信息,通过树状结构直观的展示。
由于是通过缓存进行实现的,所以在希望的到精确的引用信息时需要刷新缓存。不过由于缓存的存在,在资源改动较少的情况下,刷新速度较快,对使用影响较小。
直接将文件夹拖到项目中即可使用。
详情请点击 ReferenceFinder Wiki页面
编辑器拓展与工具
可视化的EditorWindow应继承自 EditorWindowBase
基类,Inspector编辑拓展应继承自 InspectorBase
基类
也可以直接使用继承自Odin的编辑器类进行拓展,这样会更方便一些
DebugLog与日志
ColaFramework中的Debuglog与日志相关内容请查看Debuglog与日志Wiki页面
日志控制台拓展
ColaFramework框架提供了LogCat日志控制台拓展,通过它开发者可以很方便地在Unity编辑器内部查看来自Android平台下游戏的日志。它可以让你忽略AndroidStudio的存在,直接在Unity中查看筛选日志,做到无缝对接。详情查看Wiki页面
ColaFramework框架提供了Editor Console Pro插件,功能比原生的Console强大一些。点击错误信息会打开代码编辑器,并在编辑器中高亮显示出错的代码片段。虽然Unity自带的控制台已经可以满足一些常用需求,但结合一些高级功能会更加有助于项目调试,例如直接在控制台显示代码所在位置并且高亮。一个很重要的区别是:在Editor Console Pro中,出错的源代码会被直接显示在窗口中,一目了然,方便开发者直接定位出错的地方。更多介绍可以看这个文档: Unity插件推荐Editor Console Pro
网络通信与协议
框架采用TCP网络连接,协议采用的是sproto协议,C#层封装了相关API,Lua层负责调用接口和注册回调,C#中主要是SocketManger和MessageCenter这两个类。SocketManger主要封装了网络的连接、断开、消息的发送与接收。 MessageCenter相当于一个网络消息缓存中心,用于分帧处理网络消息并抛到Lua层执行对应的handle函数。
寻路系统
ColaFramework框架目前集成了AStar、Recast两种寻路系统。
插值动画/缓动动画
ColaFramework框架集成了DoTween、iTween两款比较常见的插值动画/缓动动画插件,并且自己拓展封装了适合UGUI的UGUITween组件,可以像NGUI中的Tween一样使用,非常方便,用来解决一些简单的Tween动画效果再合适不过了。
其中拓展UGUITween组件包含以下几个常用的Tween组件:
- UGUITweenScale
- UGUITweenPosition
- UGUITweenAlpha
- UGUITweenRotation
命名空间
ColaFramework中框架级的Core源码都从属于ColaFramework命名空间,一些过时的、被废弃的插件会被移动到Abandoned目录下,命名空间也会变为ColaAbandoned,并且被打上 [Obsolete]
标记,表明该模块已被废弃。