《Unity 3D游戏客户端基础框架》概述
2017-07-15 17:55
239 查看
框架概述:
做了那么久的业务开发,也做了一年多的核心战斗开发,最近想着自己倒腾一套游戏框架,当然暂不涉及核心玩法类型和战斗框架,核心战斗的设计要根据具体的游戏类型而定制,这里只是一些通用的基础系统的框架搭建,其中包括:UI框架(
NGUI+
MVC)
消息管理(
Advanced CSharp Messenger)
网络层框架(
Socket+
Protobuf)
表格数据(
Protobuf)
资源管理(
Unity 5.x的
AssetBundle方案)
热更框架(
tolua)
这里使用的引擎版本是:
Unity 5.5.0f3
UI框架:
使用Unity 5.x进行游戏开发的朋友,估计大都想过用系统自带的
UGUI来搭建UI框架,这并没有什么不好的,只是对于引擎升级并不友好,假如Unity升级对
UGUI做了比较大的修改,那么对一个成型的项目进行引擎的升级,修改成本是不可估量的,所以这里我还是选用
NGUI作为搭建UI框架的工具,除了结合
MVC架构还要考虑后期接入热更新。
消息管理:
这里我们使用Advanced CSharp Messenger这种C#事件实现的消息管理器,特点就是可以将游戏对象作为参数发送。而且,这个先进的c#版本的消息传递系统会自动清理事件表在一个新的水平加载,这将防止程序员意外调用销毁方法,从而有助于防止许多
MissingReferenceExceptions。这个消息传递系统是基于杆海德 CSharpMessenger 和马格努斯Wolffelt CSharpMessenger扩展。
《Unity 3D游戏客户端基础框架》消息系统
网络层框架:
随着移动网络的升级,在4G网络早已普及的今天,除了单机游戏,现在绝大多数的网游都是以强联网的方式实现的,选用Socket通信可以实时地更新玩家状态,选定了联网方式之后,还需要考虑网络协议定制的问题,
Protobuf无疑也是个比较好的选择,一方面是跨平台特性好,另一方面是数据量小可以节省通信成本。
《Unity 3D游戏客户端基础框架》多线程异步 Socket 框架构建
《Unity 3D游戏客户端基础框架》 protobuf网络框架
表格数据:
在游戏开发中,有很多数据是不需要通过网络层从服务器拉取下来的,而是通过表格配置的格式存储在本地,例如:游戏中的一个道具,通常服务器之下发该道具的Id(唯一标识)和
lv(等级),然后客户端从本地数据中检索到该道具的具体属性值。通常使用
Excel表格来配置数据,但我们一般不会直接将
.xlsx格式的表格原文件打包到游戏应用包中,通常会通过工具序列化为二进制文件的格式,读取数据的时候再进行反序列化。上面我们提到了使用
Protobuf定制网络协议,但是其实
Protobuf的序列化和反序列化特性可以满足我们对于表格数据转化的需求。
《Unity 3D游戏客户端基础框架》protobuf 导excel表格数据
资源管理:
对于资源的管理,其实是为了给后面接入热更新提供可能,Unity制作游戏的资源管理方式就通过AssetBundle工具将资源打成多个
ab包,对于可热更新的资源进行热更的时候,并非单文件的热更,而是通过网络下载新的
ab包来替换本地旧的包,从而实现热更的目的。
热更新框架:
通常使用C#来进行Unity的开发,但纯C#脚本只能支持Android系统下的热更新,而对于iPhone系统则无能为力,所以这里通常需要引入一门脚本语言lua,使用C#编写底层框架,使用lua编写业务逻辑,这是业内最常见的设计方式,还有一个非常成熟的热更新框架
tolua(前称
ulua)。通常可热更新的有:图片资源、UI预制和lua脚本,而出于跨平台的考虑,C#脚本是不允许进行热更的。
小结:
上面只是大致说了一遍整个框架会涉及到的工具和技术点,下面我会对每个点进行逐篇细化,有兴趣的可以继续关注下,当然可以根据这些建议自己自学,那样也可能会快很多。相关文章推荐
- 《Unity 3D游戏客户端基础框架》 protobuf网络框架
- 《Unity 3D游戏客户端基础框架》多线程异步 Socket 框架构建
- 《Unity 3D游戏客户端基础框架》系统设计
- 《Unity 3D游戏客户端基础框架》protobuf 导excel表格数据
- 《Unity 3D游戏客户端基础框架》tolua 框架接入
- Unity 3D游戏客户端基础框架
- 《Unity 3D游戏客户端基础框架》消息系统
- Unity客户端框架笔记(状态模式和策略模式在游戏中的应用)
- Unity Shader基础( 四)Shader概述以及结构
- Unity 客户端框架(一):有限状态机
- [Unity框架]PureMVC基础
- [Unity]简单的Unity客户端与服务器通信框架
- java语言基础(71)——集合框架(增强for的概述和使用)
- WeaveSocket框架-Unity太空大战游戏-概述0
- Java基础知识强化之集合框架笔记51:Map集合之Map集合的功能概述与测试
- java基础集合框架——List、Set、Map概述(java集合一)
- Unity客户端框架笔记(状态模式和策略模式在游戏中的应用)转
- JAVA基础:集合框架概述
- Java基础知识强化之集合框架笔记32:集合之可变参数的概述和使用
- Unity 客户端框架(二):单例基类