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


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#脚本是不允许进行热更的。

游戏框架(Unity3D游戏客户端基础框架)相关推荐

  1. CLion之C++框架篇-安装工具,基础框架的搭建(一)

    CLion之C++框架篇-安装工具,基础框架的搭建(一) 背景 日常学习C++,也就是看看书.在vim里写写代码.在日常项目开发中,也是边看书(一是系统性理解.二是找找有什么更好的代码编写方式)边写代 ...

  2. 《Unity 3D游戏客户端基础框架》protobuf 导excel表格数据

    前言: 之前使用NPOI插件编写的导表工具,其实就是直接将数据进行序列化,解析时还需要进行反序列化,步骤比较繁复,最近看到Google的一个开源的项目protobuf,不仅可以用于进行excel表格数 ...

  3. Qt 框架性开发实践——基础框架篇

    基于 Qt 的组件合成框架https://blog.csdn.net/luansxx/article/details/120668676 基于 Qt 的消息总线https://blog.csdn.ne ...

  4. python开发工具和框架安装器_Python基础框架和工具

    最近在学Python金融大数据分析,在安装Python进行大数据分析的环境时遇到很多问题,例如:在安装pandas包时候就要到各种错误,总是缺少很多安装包,最后发现利用Python的Anaconda进 ...

  5. Unity3D游戏作品大盘点

    * 原文链接: http://www.unitymanual.com/404.html 经典重现<新仙剑OL> <新仙剑OL>采用跨平台Unity3D引擎,耗资数千万,历时三年 ...

  6. 腾讯 tars java_腾讯 Tars 基础框架手动搭建——填掉官方 Guide 的坑

    背景 Tars 简介 腾讯 Tars 是腾讯内部使用的 TAF(Tencent Application Framework)的对外开源版,去掉了许多冗杂多余的部分.该框架集开发.运维.微服务.RPC ...

  7. 腾讯 Tars 基础框架手动搭建——填掉官方 Guide 的坑

    背景 Tars 简介 腾讯 Tars 是腾讯内部使用的 TAF(Tencent Application Framework)的对外开源版,去掉了许多冗杂多余的部分.该框架集开发.运维.微服务.RPC ...

  8. 多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步

    今天继续开新坑,尽管过了很多 Unix 套接字编程的坑,但是实际还是有很多不同场景和性能的需求,以及最服务器架构的内容也就接触过 preforking 和 master 带 worker 而已. 所以 ...

  9. Unity3D游戏引擎之构建游戏框架与导出IOS项目(一)

    Unity3D游戏引擎之构建游戏框架与导出IOS项目 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/a ...

  10. 视频教程-热更新框架设计之客户端热更框架(中部)视频课程-Unity3D

    热更新框架设计之客户端热更框架(中部)视频课程 二十多年的软件开发与教学经验IT技术布道者,资深软件工程师.具备深厚编程语言经验,在国内上市企业做项目经理.研发经理,熟悉企业大型软件运作管理过程.软件 ...

最新文章

  1. linux tomcat 开启apr,tomcat开启APR
  2. 利用MyBatis的动态SQL特性抽象统一SQL查询接口
  3. mysql8审计_审计对存储在MySQL 8.0中的分类数据的更改
  4. stm32f407网页服务器,STM32F407单片机通过USR-LTE-7S4模块和服务器进行4G通信
  5. 2x麦克劳林公式_极限求解-泰勒公式理解
  6. 创建.NET Core程序的Nuget Package
  7. JavaWeb:重定向(redirect)和转发(forward)的区别
  8. 高中数学竞赛书籍推荐
  9. 测试实践:华为测试流程总结
  10. dz搬家 win linux,Discuz论坛完美搬家 详细分享我的DZ搬家步骤
  11. python数列_Python斐波拉契数列
  12. 阿龙的学习笔记---CMake指定C++版本
  13. 沪漂程序媛妹子的一天...
  14. HTML5 canvas 实现小时钟
  15. 使用树莓派4b和OpenCV做机械臂夹取
  16. “道德”,究竟是保镖还是杀手?
  17. 趣图:这种贱贱的骚操作,你们试过么?
  18. 专科计算机专业能报考南方电网,想进南方电网工作?你必须得是这些专业的学生!...
  19. 【Linux】主机字节序和网络字节序
  20. 小白快速完成图片设计的3款在线编辑器工具

热门文章

  1. Setup Factory安装及程序安装包制作教程
  2. Setup Factory 9 Trial使用
  3. 将小度WiFi改造为无线网卡(小度WiFi能够接收WiFi信号)
  4. java正则表达式大全(常用)
  5. 各种数值积分方法总结(从梯形积分、辛普森积分到龙贝格积分、自适应积分、高斯积分等)
  6. xmpp java_XMPP: Android基于Xmpp的即时通讯
  7. 无线通信——GSM系统组成
  8. 精密电阻阻值表丝印大全
  9. 苹果系统自带的计算机怎么恢复出厂设置,苹果电脑恢复出厂化设置的教程_苹果电脑怎样恢复出厂系统-win7之家...
  10. 计算机系统修复命令提示符,老司机帮您w10蓝屏后用命令提示符修复系统的方法...