• Stars
    star
    583
  • Rank 76,663 (Top 2 %)
  • Language
    C#
  • License
    MIT License
  • Created over 7 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

ColaFrameWork 一个Unity客户端框架

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层)

  • UI工作流程
  • UI主要方法

在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页面
Initial window
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] 标记,表明该模块已被废弃。

商业案例

联系方式

  • QQ群:421527940

友情链接

More Repositories

1

Unity3DTraining

【Unity杂货铺】unity大杂烩~
C#
6,020
star
2

UnityToolchainsTrick

提供一些UnityEditor工具链开发的常用小技巧与示例(Provides some common tips and examples for developing the UnityEditor toolchain)
C#
1,554
star
3

LitJson4Unity

适用于Unity的改进型LitJson库
C#
167
star
4

3DMoonRunner

月光跑酷3D版
C#
106
star
5

AlgorithmTraining

算法训练,包括《啊哈算法》中的算法和常用游戏算法
C++
87
star
6

catRunFast

使用python+pygame开发的小游戏《嗷大喵快跑》。 一款渣到不行的酷跑游戏,只有5关。
Python
62
star
7

FURIOUS_MOTORSPORT

极限激情飞车
C#
50
star
8

BubbleShooter

天天萌泡泡
C#
46
star
9

Eat-apple-Game

python+pygame吃苹果小游戏演示
Python
17
star
10

SpaceAirFight

使用Unity开发的3D太空大战小游戏
C#
16
star
11

Cocos2d-X_Tools

自己撸的一些cocos2dx常用小工具,记录Cocos2d-x常用小知识,Cocos2d-x技术文档分享
C
13
star
12

BerryMatchThree

草莓大作战,一款精品三消游戏
C#
11
star
13

AirFight

使用Cocos2dx-3.8&C++开发的雷霆战机小游戏
C++
10
star
14

FightZombies

使用Unity开发的第一人称射击游戏《丧尸危机》
C#
9
star
15

LinuxNetworkProgramming

记录学习Linux/Unix网络编程的小Demo
C
6
star
16

CutFruit

使用Cocos2d-x 2.x版本编写的仿切水果游戏
C++
5
star
17

CarManager_QT

QT课程设计内容,汽车销售管理软件
C++
3
star
18

Parody-Fights-the-Landlord

鬼畜斗地主(主角:老八、卢本伟、郭老师),使用ColaFramework开发
C#
3
star
19

BlockBreaker

使用Python+Pygame写的打砖块小游戏。
Python
3
star
20

AndroidProgrammingBasicTraining

记录---纯手撸Android移动应用基础教程源代码
Java
2
star
21

TrainingInCHINASOFTINTL

中软实习实训项目记录
Java
2
star
22

SnakeGame

使用python+pygame开发的贪吃蛇小游戏。
Python
1
star
23

AoDaMiaoTetris

使用QT里面的动画框架+Phonon框架编写的嗷大喵版俄罗斯方块小游戏
C++
1
star
24

StealthGame

StealthGame,潜行游戏
C#
1
star
25

FruitKiller

使用“白鹭引擎”开发的网络版《水果杀手嗷大喵》
JavaScript
1
star
26

2048

使用Cococs2d-x3.8&C++开发的2048小游戏
C++
1
star
27

XINCGer

1
star
28

DesignPattern

汇智网的设计模式教程练习代码
Java
1
star