找回密码
 立即注册
查看: 54|回复: 0

哪个unity框架斗劲全面又好用?

[复制链接]
发表于 2025-6-30 09:43 | 显示全部楼层 |阅读模式
在GitHub上搜发现有不少框架,看介绍都不错,但用起来就不知道了,每个去学的话学习成本太高,有人知道吗,比如这些框架 UnityGameFramework,Tengine,BDFramework,QFramework,JEngine,HTFramework,knight,CosmosFramework,哪个斗劲好用,东西全面一些
发表于 2025-6-30 09:43 | 显示全部楼层
我推荐可以试下F8Framework没什么学习成本,有完整的文档和demo视频教学。

https://github.com/TippingGame/F8FrameworkF8 Framework是一个优雅,轻量,符合直觉的基于Unity引擎的游戏框架,组件围绕F8一键启动,不用繁琐的启动配置最低的心智负担,框架整体遵循以极少的使用成本开发游戏。
发表于 2025-6-30 09:44 | 显示全部楼层
选什么样的框架,主要是看目的是什么?我尽量从技术和商用项目的角度来分析。
Unity从某种层面上说,本身就是框架。它帮助我们管理了渲染流程,也帮助我们进行了资源打包。
在Unity基础上,还希望增加的框架,我猜可能是以复用和提效为主。在过去的开发中,我们习惯称这种框架为 游戏逻辑框架。也有一部分框架,只为了解决界面开发,我们称为 UI框架。还有为了资源更新目的的,我们称为 资源管理框架。再例如希望代码更新,我们称为 代码热更新框架。
列举几个,大致分类。也不是很精确,有的框架大一些,涉及的方面会多:
GameFramework: 游戏逻辑 + 资源更新 + UI框架。这个框架,水平高的人会觉得很好用。但是中等水平及以下的开发人员,可能读不明白源代码,然后会产生很多使用错误,非常致命。我亲历过这样的项目,团队大部分人搞不懂框架代码,最后整个工程设计出问题,线上bug不断,开发工期永远延误。
HybridCLR: 代码热更新框架。这个框架对业务生产非常有用,强烈建议加入自己的开发流程。相对问题不多,目前使用的人也越来越多。我一直用的丐版,已经足够。有钱的可以买旗舰版本,功能更强。
YooAsset:资源更新框架。目的笔记纯粹,不像GameFramework。因为资源打包过程支持历史记录对比,所以速度上比GameFramework好。但是底层代码的质量,无论书写,还是bug数量,都远不如GameFramework。而且在商用要求下,比如异步处理,其提供的一些高阶接口有致命bug,无法正常工作。需要自己重新封装,或者重构一些底层代码。但上手确实容易,打包的效果也好,工作流设计上比较出色。依然值得推荐。
DoTween:动画控制。挺好用。而且各种引擎上,语言版本上都有变体。对技术栈丰富的人来说,很友好。学一次,基本就到处可用了。

暂时先写这么多,以后有时间再说。
吃早饭去
发表于 2025-6-30 09:44 | 显示全部楼层
UnityGameFramework在我刚学习unity的时候就已经有同好给我安利过了,有官方网站带比较全的文档API,但是时间比较久远也没有维护了,如果你想自己写个框架或者愿意自己来维护我觉得可以学习这个。但如果用为主,我个人更推荐Tengine,我认为华佗会是未来热更新的主流,YooAssets也是很多人在用的资源管理框架,会更符合这两年的技术趋势。
插些题外话,自从学了unity之后,我每年都会有一段时间沉迷于搞自己的破框架,总想着把自己的轮子搞得好一点,但最后轮子多半也没能用进自己项目里,几年下来脑海中的游戏也没搞成。所以现在我最大的感受就是轮子做加法不如做减法,轮子管理为主,重要的部分还是直接集成别人的轮子提高效率比较方便,既能满足需求,轮子核心的代码量少也相对好维护。什么都自己写真的没有必要,例如说json解析库,自己写一个到底有没有必要,我认为是没有的,自己实现确实是能提高技术方便维护,但是你是做游戏,自己的用起来能比大佬的库来的快来的全面吗,至少以我的能力来说我觉得我应该是做不到的,所以最后我直接开箱的newtonsoft.json。用轮子最终的目的还是要做成游戏,轮子全面对于做游戏来说我觉得不能算得上是一个作用很大的优点。
发表于 2025-6-30 09:44 | 显示全部楼层
震惊!说框架无用论的是否真的是从业者?框架是程序员进阶的必经之路!
首推UnityGameFramework,功能全面、成熟完善、简单易用、规范、高效。
我本人从业十年,也基于GF做了很多易用、实用、自动化生产工作流。为了不加班也是蛮拼的,通用游戏框架最重要的是积累,不断解决开发过程中遇到的痛点、难点,同时也要兼顾程序团队整体能力,以及策划、美术、动效等上下游需求。
以下是我从业十年做的积累,基于GF,积累了一套开箱即用的高效工作流,都在GF_X开源项目里了:https://github.com/sunsvip/GF_X
GF_X自动化/工业化开发游戏框架 功能介绍:
【【Unity自动化游戏框架】通用自动化游戏框架 爽到起飞的工作流 巨幅提升效率 质量 产能 - CSDN App】https://blog.csdn.net/final5788/article/details/138164034?sharetype=blog&shareId=138164034&sharerefer=APP&sharesource=final5788&sharefrom=link
GF_X B站视频教程:
GF_X通用自动化游戏框架 快速入门 开源游戏框架 GameFramework HybridCLR热更 简单易用 懒人必备_哔哩哔哩_bilibili
发表于 2025-6-30 09:45 | 显示全部楼层
推荐我个人开发的MyFramework,github可以搜到。
https://github.com/ZHOURUIH/MyFrameworkGitHub - ZHOURUIH/MyServerFramework上面是客户端和配套服务器的仓库.网络部分可随意替换不一定非要使用这里提供的服务器.配套服务器是使用C++写的,也是包含非常多的框架代码.阅读上手难度相比于其他语言会更大一些,所以可以根据自己的需求使用其他服务器,以及网络传输协议.
缺点是例子很少,但是里面功能很全,经过多个商业化项目的迭代完善,包含了很多功能。
基本系统架构


基于hybridclr的完全热更,也就是除了启动的更新过程以外,其他的框架层应用层代码是全部可热更的.
hybridclr是一个完全无门槛的,且几乎没有性能损耗的热更工具,是目前最优的游戏热更新方案.

通用对象池设计
继承ClassObject即可使用对象池进行分配.
class A : ClassObject{}
using var a = new ClassScope(out A obj);
即可在当前作用域内创建一个临时使用的类对象,无需担心GC以及对象生命周期问题.

完全封装的全局输入系统,用于统一界面层和场景层的鼠标事件
GlobalTouchSystem是一个完全自定义的输入事件检测系统,不再依赖于UGUI的EventSystem,直接从Input检测触点,以及实现如进入,离开,按下,抬起,拖拽,双击,长按等等的事件,并且全平台通用.而且完全统一了3D场景和2D界面的输入事件,无需担心还要去单独处理场景的点击与界面的点击.

命令设计模式,解耦数据层与表现层
自定义的CommandSystem,将数据与界面的交互部分放到命令类中,使其成为一个对象.在开发期间非常方便去查询指定的逻辑代码.使代码结构更加清晰.
同时将命令对象化以后也可以进行延迟执行,使其能够直接用在多线程中,也顺带实现函数延迟调用.
如果担心要创建命令对象而产生性能损耗,也可以直接将执行过程写为静态函数.

自定义对ugui的完全封装,自定义鼠标的操作事件响应
对常用的UGUI组件,如Image,Text,RawImage,等进行了封装.同时添加了一些常用自定义的控件,如图片数字显示,并且重写底层优化数字图片的渲染,使同屏显示大量伤害数字也不会对性能有明显影响.还有常用的界面对象池,滑动窗口,勾选框,下拉框,滑动条等等.

轻松实现分辨率适配
自定义的ScaleAnchor,ScaleAnchor3D,PaddingAnchor,PaddingAnchor3D可轻松应对绝大部分的屏幕自适应需求,而且也可对UI上的特效进行自适应缩放.而且只需要在编辑器中给UI的Prefab添加适配组件即可,可以使用快捷键对选中节点下的所有递归子节点添加适配组件,不需要修改任何代码.
适配的核心思想就是默认等比缩放,再次就是根据宽高独立缩放.或者停靠到父节点的指定位置.这样已经满足绝大部分的适配需求.
而且这样做有一个很大的好处,因为去掉了UGUI的锚点影响,所以窗口大小就是固定的,适配前和适配后非常明确.不会被引擎自动修改.这样就不会产生各种潜在的跟窗口大小有关的问题.

多语言本地化功能
只需要指定对应需要的文本或者按文件名提供不同语言的图片即可实现多语言动态切换.使用中文作为key,可直接在代码中照常写中文字符串,在设置显示到界面上时,会自动转换为对应的语言.图片上带文字的也同样可以在制作时直接使用中文的图片,只需要将图片名以_Chinese结尾,在显示时就会自动转换为对应的语言的图片.并且添加了代码中中文检测工具,直接收集代码中写死的所有中文,不会遗漏任何一个需要转换的文本.
这样做最大的好处就是游戏层几乎无法感知到多语言.开发时基本就按照没有多语言的条件去做.

自定义的角色状态机
实现角色任意的逻辑状态跳转。可轻松实现角色buff,角色行为控制.状态可设置共存,互斥,优先级保留等等的规则,而且搭配状态组,可以很容易去控制大量的状态.我自己的项目中状态类有几百个,也非常好管理.

角色系统
对游戏中的角色对象进行了抽象,继承关系如下



字符串,字典,列表,哈希表的扩展函数
简化绝大部分的集合类操作.对这些常用的容器添加了大量的扩展函数,可以直接当作成员函数来调用,比如List的addUnique,addNotNull,setRange,move,getSafe,safe等.可极大程度上简化代码.
比如一个很常见的情况,在遍历一个列表时要去对这个列表进行修改,如果直接写肯定是会报错的.所以封装了一个SafeList.支持在遍历时去修改列表.

逻辑场景和流程设计,方便规划游戏的运行阶段
GameScene用于规划游戏的逻辑场景,比如登录场景,大厅场景,战斗场景等等.每个GameScene包含多个SceneProcedure,也就是划分具体的流程,比如战斗开始,战斗准备,战斗进行中,战斗结算等.而且允许SceneProcedure嵌套,用于划分更加细致或者分支流程.并且流程跳转逻辑符合常规思维.
算是这个框架中的一大特点.在所有我接手过的项目里,几乎看不到完善的游戏运行状态管理.全是一个State枚举就没了.

大量的数学计算,字符串操作,unity函数封装,时间类函数封装,csharp函数封装,二进制以及字节操作函数封装等
几乎包含了可能用到的绝大多数工具函数,数学计算中诸如各种几何,三角函数,角度单位转换,随机操作等等跟数学计算相关的工具函数.UnityUtility中也包含了大量对于Unity功能的封装,比如碰撞检测,GameObject查找,日志打印,视图计算,射线计算,空间转换等等.二进制工具函数BinaryUtility中也封装了大量的序列化工具函数,可实现按字节序列化或者按位序列化,以及大量的位操作函数.

完善的资源管理系统
底层自动根据编辑器或者真机来使用AssetDatabase或者AssetBundle。应用层完全无需修改代码。而且AssetBundle还支持异步加载时自动下载本地不存在的资源。并且对于不同类型的资源还再次封装了对应的系统,比如EffectManager,PrefabPoolManager,TPSpriteManager等.界面使用的图集是手动通过TexturePacker来生成的.如果想要使用Unity的SpriteAtlas也可以自己修改.

支持多个平台
windows,ios,android,webgl。
谷歌分发PAD支持
以install-time的方式,设置绝大部分资源为在安装时再跟安装包一起下载,无需担心上传GooglePlay的包体限制.
谷歌登录,谷歌支付
包含接入谷歌登录和支付的java代码,支持本地化显示商品价格
表格配置
可直接读取SQLite表格,也可以将Excel转换为自定义表格文件后进行读取

自定义序列化类用于网络通信
网络通信序列化可根据自己的需求选择按位序列化,按字节序列化,json序列化.
其中按位序列化带宽占用最小,占用带宽比Protobuf还小.
按字节序列化,由于没有优化手段,完全按照变量类型的大小去序列化的.所以带宽占用较大,不过由于解析过程简单,执行效率也最高.
json序列化一般用在http的通信上,tcp不推荐使用.
至于选择tcp还是udp,框架中都支持,但是我个人的项目选择使用tcp,不会有明显的性能瓶颈.

热更代码的代码混淆
因为热更代码占了绝大部分,所以只混淆热更代码已经基本满足绝大部分需求。

直接集成到unity编辑器中的检测工具
代码合理性检测工具,资源合理性检测工具。

极少的插件依赖
依赖或者使用到的外部插件只有TexturePacker,AvProVideo(添加了指定的宏以后才能使用,如果不需要可以不添加宏),经过自己修改优化后的UnityObfuscator,最新的版本已经换成了更加强大的Obfuz.也是因为UnityObfuscator中用到了Mono.Cecil在Unity6下会出现奇怪的文件流错误,在unity2022中是正常的,所以项目更新到Unity6以后,就不得不使用Obfuz了.
还有非常多的特性没有列出来。。。

框架的设计目标就是用最少的代码,消耗最小的精力去开发一个游戏.我做游戏中踩过的坑,决不会让使用这个框架的人再踩一次.
在一行代码不超过130个字符的前提下,尽量减少代码行数,能写成一行就不会写成两行,但是大括号基本都需要换行.
框架中的注释也比较完善,几乎大部分的成员变量都添加了注释,比如







懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-6-30 15:17 , Processed in 0.163380 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表