游戏框架(Unity3D游戏客户端基础框架)

“游戏框架”作为整个游戏的框架,具有核心的地位,一个游戏的层次和后期维护性就取决于游戏框架。


1:3D引擎框架图


2:Unity3D游戏客户端基础框架

一些通用的基础系统的框架搭建,其中包括:

UI框架(UGUI+MVC)

消息管理(Message Manager)

网络层框架(Socket + Protobuf)

表格数据(Protobuf)

资源管理(Unity5.x的AssetBundle方案)

热更框架(tolua)


2.1:UI框架

 

编写UI框架的意义:

1:打开、关闭、层级、页面跳转等管理问题集中化,将外部切换等逻辑交给UIManager处理。

2:功能逻辑分散化,每个页面维护自身逻辑,依托于框架便于多人协同开发,不用关心跳转和显示关闭细节。


--通用性框架能够做到简单的代码复用和“项目经验”沉淀。

基于Unity3D和UGUI实现的简单的UI框架,实现内容:

  1. 加载、显示、隐藏、关闭页面,根据标示获得相应界面实例;
  2. 提供界面显示隐藏动画接口;
  3. 单独界面层级,Collider,背景管理;
  4. 根据存储的导航信息完成界面导航;
  5. 界面通用对话框管理;
  6. 便于进行需求和功能扩展;
     

2.2:消息管理(Message Manager)

  1. 一个消息系统的核心功能:
  2. 一个通用的事件监听器;
  3. 管理各个业务监听的事件类型(注册和解绑事件监听器);
  4. 全局广播事件;
  5. 广播事件所传参数数量和数据类型都是可变的(数量可以是0~3,数据类型是泛型)

消息管理设计思路:在消息系统初始化时将每个模块绑定的消息列表,根据消息类型分类(用一个string类型的数据类标识),即建立一个字典Dictionary<string, List<Model>>:每条消息触发时需要通知的模块列表:某条消息触发,遍历字典中绑定的模块列表。


2.3:网络层框架(NetworkManager)

  1. 除了单机游戏,限制绝大多数的网游都是以强联网的方式实现的,选用Socket通信可以实时地更新玩家状态。
  2. 选定了联网方式后,还需要考虑网络协议定制的问题,Protobuf无疑是个比较好的选择,一方面是跨平台特性好,另一方面是数据量小可以节省通信成本。
  3. Socket通信:联网方式、联网步骤,数据收发以及协议数据格式。(加入线程池管理已经用一个队列来管理同时发起的请求,让Socket请求和接收异步执行,基本的思路就是引入多线程和异步等技术。)
  4. Protobuf网络框架主要用途是:数据存储(序列化和反序列化),功能类似xml和json等;制作网络通信协议等。(Protobuf不仅可以进行excel表格数据的导出,还能直接用于网络通信协议的定制。)
  5. Protobuf是由Google公司发布的一个开源的项目,是一款方便而又通用的数据传输协议。(在Unity中可借助Protobuf来进行数据存储和网络协议两方面的开发。)

2.4:表格数据

  1. 在游戏开发中,有很多数据是不需要通过网络层从服务器拉取下来的,而是通过表格配置的格式存储在本地。
  2. 游戏中的一个道具,通常服务器只下发该道具的ID(唯一标识)和LV(等级),然后客户端从本地数据中检索到该道具的具体属性值。(通常使用Excel表格来配置数据,可以使用Protobuf、JSON、XML等序列化和反序列化特性对表格数据转化。)
     

2.5:资源管理(AssetBundle)

  1. AssetBundle是Unity引擎提供的一种资源压缩文件,文件扩展名通常为unity3d或assetbundle。
  2. 对于资源的管理,其实是为热更新提供可能,Unity制作游戏的资源管理方式就通过AssetBundle工具将资源打成多个ab包,通过网络下载新的ab包来替换本地旧的包,从而实现热更的目的。
  3. AssetBundle是Unity编辑器在编辑环境创建的一系列的文件,这些文件可以被用在项目的运行环境中。(包括的资源文件有:模型文件(models)、材质(materials)、纹理(textures)和场景(scenes)等。)

Editor打包AssetBundle:
 

//Editor打包AssetBundle
[MenuItem(“Assets/Build AssetBundles”)]
static void BuildAllAssetBundles(){
    BuildPipeline.BuildAssetBundles(Application.dataPath+“/AssetBundles”,
    BuildAssetBundleOptions.None, BuildTarget.StandaloneOSXIntel);
}

2.6、热更新框架(tolua)

  1. 使用C#编写底层框架,使用lua编写业务逻辑,这是业内最常见的设计方式,还有一个非常成熟的热更新框架tolua。
  2. 通常可热更新的有:图片资源、UI预制和lua脚本,而处于跨平台的考虑,C#脚本是不允许进行热更的。

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UNITY游戏框架原理基于MVC的逻辑模式。MVC是一种在制作游戏时对代码的逻辑化整理的思想。在UNITY开发过程中,许多公司在制作游戏开发项目时都使用了MVC的逻辑模式,即数据模型-视图-控制器。 UNITY游戏框架可以分为三个主要部分。第一部分是游戏开发的基础,包括游戏的架构设计、场景管理和资源管理等。第二部分是网络原理,主要介绍网络通信的原理,开发客户端的网络模块和服务端程序框架。这套框架具有较高的通用性,可用于多种游戏。第三部分是网络游戏,主要讲解房间系统和多人游戏的开发。 在设计UNITY游戏框架时,可以考虑采用MVC的结构模式,将模块之间的功能区分开,达到低耦合的效果。这样做的好处是,当需要替换游戏UI或进行其他功能修改时,只需修改相应的模块,而不会影响到其他功能,提高了游戏质量和开发效率。举个例子,如果一个项目的各个UI下挂载了大量的脚本,替换UI可能会导致其他功能受到影响,而采用MVC的结构模式可以解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Unity框架——MVC框架](https://blog.csdn.net/Htlas/article/details/79076201)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Unity 3D网络游戏实战](https://download.csdn.net/download/qq_39014199/11143402)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值