Unity如何搭建游戏框架

Unity引擎本省就是一个框架,我们基于Unity再做一个游戏开发框架,本质就是建立一种组织自己项目的方式和方法,让程序+美术+策划一起协同工作,同时能开发出满足项目需求的游戏产品。所以游戏框架的架构与设计与项目管理本身有很密切的关系,今天从另外一个维度来说说基于游戏引擎来如何来做游戏app游戏开发框架。

对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发的技术大佬,欢迎你来交流学习。

1: Unity引擎给我们开发游戏提供的是机制

渲染机制:

开发机制:

Unity给我们提供了两种开发机制,一种是组件化的开发机制,一种是ECS的开发机制。我们在做框架的时候,首先要想清楚我们是基于哪种开发模式,ECS现在比较火,性能高。组件化模式简单,符合大多数人的开发习惯。我们都采用引擎提供的开发机制来开发对应的游戏逻辑。

资源管理更新机制:

可视化编辑器与编辑器扩展机制:

可视化的搭建游戏场景是游戏引擎的主要功能之一,所以Unity提供了基本的编辑器的功能,提供了基本的组件和控件。同时每个项目有不同的一些工作流,比如打包脚本,比如关卡编辑器,对于Unity而言提供给用户进行扩展编辑器功能的机制,能给开发者做成一些工具实现不同的项目策略集成到游戏项目里面。

跨平台机制:

玩家输入设备:

游戏需要接收玩家的操作,游戏引擎要对接各种操作设备,键盘鼠标这种直接从操作系统接入就可以了,还有其它游戏手柄的设备, 提供输入的虚拟映射,来方便玩家来配置对应的操作。鼠标,键盘,触摸屏, 游戏手柄等都接入到了游戏引擎中。如果有特殊的设备,可以根据SDK直接来访问和对接。

提供第三方开发库的机制:

提供性能参数分析相关机制与工具:

Unity 提供profiler工具对游戏开发中的性能剖析是非常重要的,因为有些性能数据只有Unity引擎内部才有,Unity内部有很多重要的与性能相关的数据,都可以供开发者访问到,但是它提供的性能分析工具只展示了通用重要的数据,于是有一些性能分析工具根据不同的项目性能需求,显示出更细致的性能数据的插件,其实都是读取了Unity提供的性能数据。

还有其它的一些机制,我这边就不一一列举了,对于Unity引擎给开发者提供的是一些游戏开发中的常用的机制,而接下来我们要做的是用这些机制,结合我们的项目和团队定制出最适合我们开发游戏项目的策略,所以本质上来说我们做游戏框架其实是基于Unity机制来定制定制适合我们的一种开发策略。

Unity游戏框架需要定制哪些策略

根据游戏定制渲染管线+Shader策略:

这个是大型游戏项目中很重要的一个环节,它首先会涉及到游戏的渲染效果,涉及到游戏运行的性能。比如我们要做一个卡通风格的游戏《火影忍者》里面所有的角色都是卡通风格,那么我们做框架的第一件事情就是要实现卡通渲染着色Shader。

如果游戏不需要支持任意数目的光源,最多只有4个光源,但又需要实时光照计算,而不能用静态光照,又需要极致性能在手机上跑,我们可能就会定制渲染管线或换渲染管线,用定制渲染管线或URP轻量级渲染管线来代替传统的向前渲染管线。所以框架要做的第一件事情就是根据项目选着或开发适合项目的渲染管线与Shader。然后做项目技术验证,看看当前的渲染效果与性能能否满足要求,多平台手机端的差异是否被解决等。

选择合适的开发模式来定制开发策略:

我们用Unity做项目的时候搭建框架首先要考虑的就是开发模式,到底是使用传统的组件化开发模式还是使用ECS模式,还是组件化+游戏逻辑ECS的模式结合。这个根据自己的项目来选择合适的就可以了。ECS,数据都在一个Entity内,大量的数据用Trunk分配,避免内存碎片,提升访问数据的缓存命中,提升性能,System只有代码算法逻辑, 可以通过多线程来调度System获得更好的性能。组件化模式开发简单方便,符合大多数开发者的思维习惯,选一个合适自己项目和团队的方式就可以了。有些技术总监一上来就各种复杂的开发模式,其实要反思一下这样是否真的适合团队,复杂的东西不是每个团队的开发者都能驾驭好的。

选择合适团队与项目的开发规则

开发模式选好了后,就来制定开发中团队协作的一些规则,通过规则来限定不同的研发角色的一些工作方式,让大家统一,高效的协同作战。比如版本管理工具用git。所有的角色,特效,UI,地图场景都做成预制体,预制体不挂任何的逻辑代码。根据美术来分好项目资源目录结构,场景美术, UI美术, 特效美术, 角色美术与动作特效等, 这样就可以独立的工作最大限度的减少版本冲突等。这些策略确定好了都是为了多人更好的协同开发,减少冲突。

制定好规则,规定好哪些代码需要考虑重用,哪些代码不用考虑重用,很多开发者在写一些原本不用考虑代码重用的地方,花了很多心思,想了很多的设计模式来包装,其实有时候没有必要,提前制定好规则,不用考虑重用的地方不用花太多的心思精力在可复用上。这样能大大减少开发人员包袱,让逻辑代码更简单。

制定好代码模块的衔接规则,能方便的屏蔽代码,隔离错误,移除与重构质量不高的代码。

还有一些定制命名规范等规则,一些程序与策划沟通的规则,这些就不再展开描述了。

定制好基于版本管理与增量更新的资源管理策略:

资源管理对于游戏开发而言是非常重要的,在开发中控制游戏的内中占用涉及到资源的加载与释放,每次更新新的功能与游戏打空包都涉及到资源的增量下载与更新,Unity提供了3中机制来做资源加载Resources, AssetsBundle, Addressable, 由于要涉及打空包和资源更新一般资源管理都抛弃掉了Resources,大部分的项目都基于AssetsBundle或Addressable来做好资源管理,资源的版本管理,和基于版本的增量更新与断点续传。这些都是框架自己根据项目来定制策略。

定制好多平台自动化打包发布的策略:

当我们开发完游戏或者游戏在测试的时候经常需要做版本发布。做好自动化的打包与发布非常的重要,比如某个版本要做内测了,用git拉取一个分支出来,然后运行自动化打包脚本,生成对应平台的安装包提交内测。内测的时候测试报告如何写,需要测试哪些功能等都要做好规定,定制好对应的策略,稳定的项目都是通过优秀的管理与测试测出来的。

定制好特定项目的特定工具

很多特定的游戏需要开发一些工具来完成,如关卡编辑器, 行为决策树,路径烘培与地图生成工具等。这个时候我们就需要开发一些工具出来给美术,策划来使用,帮助他们和程序很好的配合,完成项目开发。

经过这些考虑,基本上一个游戏框架的雏形就出来了,一个组织游戏项目开发的流程与规范基本就定型了,这样项目也就基于这样的方式铺开来,进行快速的迭代开发。

这个群里有一些的Unity游戏主程框架进阶的一些课程,值得大家学习和交流。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity学习游戏框架涉及到一些重要概念和设计模式。其中,单例模式在Unity中是一个常见的设计模式,用于管理全局唯一的对象实例。在Unity中,可以通过创建一个静态成员变量和静态方法来实现单例模式。例如,可以创建一个GameManager类,其中包含一个静态的GameManager实例变量和一个静态的GetInstance方法,通过GetInstance方法来获取GameManager的实例。 另外,Unity中的子类管理类可以继承自基类,并通过传递自身的类型参数来创建单例对象。例如,可以创建一个继承自BaseManager的GameManager类,并将自身的类型GameManager传递给基类。这样就可以实现GameManager的单例对象的管理。 在Unity学习游戏框架的过程中,还会接触到其他重要的概念和模块,比如缓存池模块、资源加载模块、事件中心模块、场景切换模块等。这些模块和概念都是为了提高游戏性能和开发效率而设计的。可以结合实际项目需求来学习和应用这些模块。 总结来说,Unity学习游戏框架需要了解单例模式的实现方式,掌握子类管理类的使用方法,并学习和应用其他关键模块和概念来提高游戏开发的效率和质量。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Unity游戏基本框架](https://blog.csdn.net/TongOuO/article/details/122764529)[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_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值