Unity3D开发基础组件提取总结

在游戏开发过程中,除了逻辑功能的开发之外,还有非常多基础的模块。这些模块,对大部分手机网络游戏来说都是一样的。所以,在上个游戏已经上线运营大半年之际,我认为有必要将这些模块整理出来。让后面其它游戏的开发,能够不用从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開始。 整理完毕之后。我们大概的代码结构例如以下:

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

时间: 2024-12-15 06:58:18

Unity3D开发基础组件提取总结的相关文章

[原]Unity3D深入浅出 - 脚本开发基础(Scripts)

常用脚本事件: Update:每帧调用一次 Start:在第一次Update执行前调用 Awake:脚本实例在创建时调用 FixedUpdate:每个固定物理时间间隔调用一次 LateUpdate:每帧调用一次,在Update之后 MonoBehaviour类: MonoBehaviour类是uniyt中非常重要的类,定义了基本的脚本行为,所有脚本类均需要从它直接或间接继承.MonoBehaviour还定义了对各种特定事件的响应函数,这些函数名均以On作为开头,下面是一些常用的事件响应函数. O

数据分析 关于基础组件与介绍

第二部分 关于基础组件与介绍 基础信息库种类 基础信息库是账户或者自然人的纯真数据库查询系统.系统内积累存储的数据包括有: ü 手机号归属信息 ü IP数据纯真库 ü GPS信息对应地址信息 ü 域名空间身份信息 ü 3G分组域通讯信息 ü VPN服务器基础信息 ü VPN服务器日志信息(最新的区域时间段) ü 国内运输系统基础数据 ü 网络帐号密码查询系统 ü 网络帐号详情搜索查询 3S定位技术 3S 是通过遥感技术(RS).地理信息系统(GIS).全球定位系统(GPS)实现位置确认技术的统称

Unity3D的基础概括1

坐标系统 坐标系统在Unity3D开发过程中具有非常重要的作用,是游戏对象定位.移动.缩放.旋转等操作的基础.坐标系统包含以下基本概念: 三维向量(Vector3): 用于表示三维坐标空间的向量和点,可进行向量运算. 世界坐标(World Space): 相对于整个世界空间建立坐标系,使用全局坐标(通过Transform.position获取).其X轴正方向指向屏幕右侧,Y轴正方向背离观察者,Z轴正方向指向屏幕上方. 视口坐标(ViewPort Space): 坐标点被归一化,并且相对于相机建立

微信小程序开发基础知识总结

微信小程序在无论在功能.文档及相关支持方面,都是优于前面几种微信账号类型,它提供了很多原生程序才有的接口,使得我们的小程序在很多方面突破H5页面应用的限制,更加接近原生程序的功能,因此微信小程序具有很大的前景想象力.它提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上. 1.小程序的目录结构 小程序的目录结构如下所示. 其中项目级别的的文件包括 app.js.ap

一起学Google Daydream VR开发,快速入门开发基础教程一:Android端开发环境配置一

原文因涉及翻墙信息,被强制删除,此文为补发! 准备工作 进入Google Daydream开发者官网,开启准备工作,官网地址:https://vr.google.com/daydream/developers/ -------------------------------------------------------------------------------------------------------------------- Google Daydream开发者网址: https

JavaEE开发基础

1 JavaEE简介 Java平台有三个版本,分别是JavaSE(Java Platform, Standard Edition),JavaEE(Java Platform, Enterprise Edition)和JavaME(Java Platform, Micro Edititon). JavaSE以前称为J2SE,适用于桌面系统开发,它包含了支持Java Web服务开发的类,并为JavaEE提供基础.JavaEE以前称为J2EE,适用于企业级应用开发,它是在JavaSE的基础上构建的,它

20145239 杜文超 实验四 Android开发基础

20145239实验四 Android开发基础 实验内容 基于Android Studio开发简单的Android应用并部署测试 了解Android组件.布局管理器的使用 掌握Android中事件处理机制 Android Studio安装 实验步骤 安装 JDK 并配置 JDK 环境变量 依次使用计算机->系统属性->高级系统设置->高级->环境变量,然后新建一个JAVA_HOME变量,令它为计算机中安装JDK的位置: 安装Andriod Studio并配置 1.双击运行Andri

ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习

首页 头条 文章 频道                         设计频道 Web前端 Python开发 Java技术 Android应用 iOS应用 资源 小组 相亲 频道 首页 头条 文章 小组 相亲 资源 设计 前端 Python Java 安卓 iOS 登录 注册 首页 最新文章 经典回顾 开发 Web前端 Python Android iOS Java C/C++ PHP .NET Ruby Go 设计 UI设计 网页设计 交互设计 用户体验 设计教程 设计职场 极客 IT技术

服务器架设笔记——Apache模块开发基础知识

通过上节的例子,我们发现Apache插件开发的一个门槛便是学习它自成体系的一套API.虽然Apache的官网上有对这些API的详细介绍,但是空拿着一些零散的说明书,是很难快速建立起一套可以运行的系统.(转载请指明出于breaksoftware的csdn博客) 为了实现最基础的URL解析等功能,我把<Apache模块开发指南>一书粗略了翻看了两遍,以利于迅速了解Apache模块编程的相关知识.至于书中具体的知识点,我并不在此赘述.但是为了便于大家了解之后遇到的各种相关的知识点,我大致罗列几条(摘