在游戏开发过程中,除了逻辑功能的开发之外,还有非常多基础的模块。这些模块,对大部分手机网络游戏来说都是一样的。所以,在上个游戏已经上线运营大半年之际,我认为有必要将这些模块整理出来。让后面其它游戏的开发,能够不用从0開始。该游戏client採用Unity3D开发,那么我们这里抽取的基础组件也就是针对Unity3D引擎来的。

简单的梳理之后,我发现主要有下面一些模块,能够独立抽取出来,当然各个模块之间也有一个依赖关系。比方日志模块,差点儿是全部模块都须要依赖的。

1、日志模块

游戏开发中,我们避免不了日志打印,由于有些时候。我们须要输出一些信息或者进行一些调试。

所以。一个方便的日志组件能够事半功倍。当然,你也能够直接使用unity自有的Debug.Log。

可是我们希望抽象出来一套日志接口。为了更方便的控制和扩展。

2、资源读取模块

游戏开发中。我们有非常多的资源。包含lua脚本,游戏配置表,assetbundle等。

在研发的过程中,资源的改变是常事。所以,在研发的过程中,我们直接读取本地的资源。这样假设资源进行改变之后。里面就能够反映在Unity编辑器中。上线或者内部提供的Debug版本号,我们採用资源更新的方式,同一时候,我们会将资源碎文件打包到一个归档文件(MPQ)文件里。然后游戏须要资源的时候,会从MPQ归档文件里读取。

所以,我们的资源读取模块,主要提供一个统一的资源读取接口,调用者不用考虑当前资源是从本地文件还是MPQ归档文件里读取到的。

3、资源更新模块

手机网游在玩家启动游戏之后。会有一个资源更新检查,假设有资源更新,则下载须要更新的资源。这也是如今主流网络游戏的开发模式。主要避免频繁的更换client。资源更新模块逻辑比較单一,就是获取server一个清单文件,然后依据清单文件,下载全部须要下载的资源文件。为了更好的体验。我们支持断点下载。

4、本地资源解压模块

当我们首次发包的时候,我们通常会把全资源打到终于的包中。这样也是为了让用户下载完毕之后,不用再次更新一个非常大的资源。后面紧紧在有须要更新的时候,才採用增量更新的方式进行下载。所以,第一次我们将资源放在终于的包中。我们须要将资源解压到一个可读写的存储文件夹。后面增量更新的时候。我们下载的资源也一样放在这个位置。

5、UI状态管理

网络游戏中。有非常多UI时。我们须要对打开的UI和UI跳转进行管理。

我们能够採用一种相似状态机的方式来管理UI。以及完毕UI界面的切换

6、Socket/Http通信组件。以及协议相关组件

网络游戏,自然少不了和server的通信。如今我们一般採用socket长链接的方式。当然。如今手机游戏的开发。也有非常多採用Http的方式,也有非常多游戏中两种方式都存在。

7、lua集成

如今为了做热更新,一般游戏逻辑,我们採用lua来开发。

所以。我们须要继承lua。如今集成lua能够有非常多选择。什么ulua。kopielua,slua等。这里都是大同小异,看自己的选择吧。关键能够做一个简单的封装,让lua逻辑的编写採用统一的格式。

8、UI控件事件的封装,方便lua中使用

依据你选择的lua插件,能够对UI中的事件做一些简单的封装。使得事件和回调在lua中能够更方便的处理

9、MPQ资源打包和读取组件

之前。我们说过。为了降低碎文件。我们在公布增量更新的资源的时候,我们首先将全部须要增量更新的资源。打进一个mpq归档文件里。

所以,我们须要两个组件。一个是MPQ打包工具,另一个C#中MPQ文件读取组件。

10、多语言文本文件处理

随着游戏的火热,我们对海外渠道的支持,也是能够预见的发展。

所以。我们在开发的时候,就须要想好多语言的支持。这里除了unity本身模型和纹理等的支持,我们另一类比方游戏中各种tip提示等,也须要做多语言支持。

11、渠道SDK统一API

国内大环境是上线时有N个渠道SDK须要接入。这里我们在Unity中抽象出一套统一的调用接口。屏蔽android和ios等平台的差异,然后提供android平台的支持,和ios平台的支持。至于SDK本身的接入。和渠道包的打包等我们採用U8SDK的方式来做。

12、对象池

手机游戏对于用户体验有着较高的要求,所以我们在游戏开发过程中,须要採用一定的技术来缓存一些经常使用的组件,让游戏的性能体验更加完好。

这里。方案之中的一个就是採用对象池技术。

对象池本身的实现和详细的游戏无关,能够独立成一个组件

13、AssetBundle管理

游戏中,之前我们说过。我们是将资源打包成assetbundle。然后通过热更新下来。

所以,游戏中我们须要从assetbundle中完毕资源的读取和实例化。

所以。为了更方便更好地读取资源。我们能够对assetbundle进行统一的管理

14、其它基础组件和相关经常使用函数的整理

游戏开发中还有非常多其它经常使用的辅助函数等,我们也能够提取出来。 比方unity单例,多线程同步。MD5。IO操作等。

这些就是眼下整理出来的一些比較通用的点,也希望通过这个整理,让后面新游戏的开发,有一个略微基础的起步。不用从0開始。 整理完毕之后。我们大概的代码结构例如以下:

后面。我会将各个组件的实现大概说一下,也当给自己做一个纪录。这套东西。后面随着时间的推移和经验的积累,可能还会增加很多其它的功能。

Unity3D开发基础组件提取总结相关推荐

  1. Unity3d 开发-基础篇

    最近转向U3D开发,在公司内部范围内做的U3D开发讲座的基础篇,放在这里和大家分享,以备以后自己查询 这些是能让程序和美术形成战斗力的最基本的概念,高级话题会在后面补上 1(编辑器基本概念与工作流程) ...

  2. 鸿蒙开发-基础组件介绍及chart组件使用

    场景 鸿蒙基于JS搭建HelloWorld并修改国际化文件: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/118274050 在 ...

  3. 轻量级智能穿戴开发基础组件:input

    交互式组件,包括单选框,多选框,按钮. 子组件 不支持. 属性 名称 类型 默认值 必填 描述 type string button 否 input组件类型,可选值为button,checkbox,r ...

  4. Unity3D开发基础知识详解

    本文简介 常用方法简介 物体操作 实例化 网络相关 网络协议 TCP UDP 代码怎么写 编译相关 文件保存路径 学习资源推荐 本文简介 本文旨在总结之前的博客,因为之前的博客比较零散,对于各个模块之 ...

  5. 基于Unity3D开发交通基础仿真模型实战

    交通仿真是描述交通系统的重要方法.要想成为一个专业的仿真工程师,除了掌握主流仿真软件(如VISSIM)的基本操作外,还须掌握Unity3D开发交通仿真模型,实现更复杂的场景和功能. 本篇将介绍 基于U ...

  6. c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发.开发语言同样是基于.NET框架的C#语言或VB语言.Smart组件是Robotstudio软件中实现 ...

  7. IOS开发基础之屏幕组件适配添加约束

    IOS开发基础之屏幕组件适配添加约束 使得横屏显示也能自动适配 对齐我们可以按住Ctrl键,把控件连线至view中 如果我们不小心添加错了.可以清除掉约束 具体约束可以在右边查看 by johnson ...

  8. Android开发基础(四大组件及Intent)

    一.Android开发的四大组件: 1.Activity:(通常展现一个可视化的用户界面) (1)一个Activity通常就是一个单独的屏幕(窗口). (2)Activity之间通过Intent进行通 ...

  9. Unity3d开发IOS游戏 基础

    Unity3d开发IOS游戏 基础 @阿龙 -  649998群 1.先说明两个问题,我在WIN7下面的U3D里面,用了雅黑字体,但是导出为ios后,字体就看不见了,这是为什么呢?这是需要在MAC下找 ...

最新文章

  1. Docker Toolbox替换默认docker machine的存储位置
  2. 2017年第八届蓝桥杯 - 国赛 - C/C++大学B组 - A. 36进制
  3. php渲染视图,Laravel 视图渲染:Blade 模板引擎
  4. input file实现批量上传
  5. SQL SERVER 数据库主键和外键的思考
  6. [译] 想帮助用户做决定?你的APP可以这样设计!
  7. Oracle sga、pga介绍改动
  8. H5-表格的基本样式
  9. 神思SS628(100)型第二代身份证验证阅读机具二次开发
  10. 光缆接头盒故障原因分析
  11. R语言使用aov函数执行单因素方差分析、使用TukeyHSD函数分析单因素方差分析的结果并解读TukeyHSD函数的输出结果
  12. 广告中的CPM、CPC、CPA解释
  13. 研发人员提高自身水平促进网络棋牌游戏发展
  14. 如何基于 ZEGO SDK 实现 Android 变声/混响/立体声
  15. Uniapp|Vue-汉字转拼音|获取汉字的首字母js实现
  16. Python 写入csv中文乱码问题
  17. Adobe Premiere导出文件过大
  18. Dapper,大规模分布式系统的跟踪系统
  19. 背八股文的都是什么水平
  20. BACnet协议介绍

热门文章

  1. WMI介绍和应用查询硬件信息(硬盘信息、主板信息、BIOS信息、显示器信息、网络适配器、CPU信息)
  2. Linux下进程隐藏的常见手法及侦测手段
  3. 1. OD-界面视图及基本快捷键操作,修改hello word
  4. masscan安装、研究、测试之旅、扫描结果处理
  5. Mysql 学习笔记08
  6. 浏览器对象模型(BOM)
  7. Linux中如何让进程(或正在运行的程序)到后台运行?[zz]
  8. merlin.acs的使用方法 merlin.acs添加右键菜单
  9. postgresql,pgadmin4安装后出错,界面只有文字
  10. JavaEE实战班第九天