|
发表于 2022-9-20 11:15:45
|
显示全部楼层
最近接触ue4也算2个多月了,实在是忍不住了,每天,做ue4的活,都像在屎海里潜水捞鱼,快恶心死了,下边就列下ue4和u3d的优缺点对比
关于语言 c# 真的已经是 优美的无法超越的语言, 写起来就是插花一样,用起来,像铁轨, 即好看,又好用。 和c++对比,我说下他们的优缺点。
- 就是运行速度没有c++快,可以c#是c++的85%左右吧,因为有一个mono层,而且mono层,写调用,有各种检测,所以会导致速度降低一些,当然,如果你使用native c,或者直接使用burst ecs等,可能效率会增加一些,但其实ue4下边c++也有各种的多线程操作,但不敢多用,没有深入了解到还。
- ue4的语言层面,代码识别帮助简单就是一个屎, 几乎和没有的一样,但优点就是开源的,可以去库里边查,但效率可能连u3d 40%都没有,数据库翻了好多天,仍然需要去库里边来回的查,然后再写。
- u3d的结构,其实比ue4合理,ue4过于的oop化,两个元素,也要定义一个对象,那怕是临时性的,好处就是在看代码的时候,大概知道这个是干什么的,缺点是,加起来,类多到你这辈子也看不完~ u3d代码量和方法量平衡的非常好,而且目标明确,使用c#语言天然优势,对T和interface 和附加特性,封装起来,好看,也好用~ 传什么一目了然,ue4基本是想用c#语言的方式,interface化,attibute化, struct/class仿分离,内存自己管理,模版封装,但c++的冗余,真的是让人头皮发麻,你能看到模板类是一个类名称,但就是需要查一下,才知道传什么内容。诶 c++这个语言,有些特性真的让我害怕。
- 吐槽下c++, 感觉有的时候真不如c, c语言简洁,最复杂也就是宏定义了,但c++即有好多特性,又有扩展特性,ue4还改装c++,增加了更多仿生特性,可能ue4团队已经尽量的让,代码变的好看了,但真的和c#层差一些,起码,代码辅助就差不少。 c语言,我感觉真心不错,就是几个字,内存,指针,结构,函数,就够了,你搞那么多复杂的特性干什么啊~ 兼容性,有的时候还是个问题~ 诶c++,我感觉写应用层代码,真心不合适, 写引擎代码我能理解,应用层,还是换换吧。
- 文件结构性,和代码调用相关,ue4的结构为了性能,整了好多层,优点就是玩转后,你可以效率会很高,但玩不转,你要在屎里边呛好多屎~ 还有就是学习成本, u3d的gameobject,虽然使用ecs方式,也在像结构数据方向发展,但那个,可能是数据较多的时候才会使用,怎么说呢,u3d知道自己的一些弱势,但有方法补救,比如使用c++写核心计算逻辑,使用多线程,写并行逻辑,起码不会让框架代码混乱,但ue4的c++特性,天生的,写同样的代码,你就是比u3d丑2倍,可读差也差2倍。所以开发时间,也可能会长2-3倍,尤其是对新手,可能4倍都有可能。
- 说下u3d的缺点,u3d的插件太多,官方不统一,确实是个坑,我感觉官方应该买或者合作一套,官方集成的插件在编辑器中,像ue4一样,要不,每个游戏,大家都用的插件不一样,而且每个公司都有可能不同, 各玩各的,主程玩的不一样,导致下边人学的也不一样, 所以这种来说,真心的比ue4差一些。 还有缺点,我认为不是缺点,就是渲染,ue4渲染确实很棒,但在移动平台,他的计算量确实比u3d大不少,而且生成的shader代码,极其难看, 如果优化,不是大牛就算了吧,还是乖乖的使用材质编辑器吧。u3d虽然效果一般,但真心的,如果花心思做,我感觉,做出来不比ue4差, 而且自己写的,对优化非常容易。 u3d还有个缺点,整天的让你注册,登录,想法的要钱,你千万别和公司挂勾,要不,就花钱买帐号吧。 开源性,其实u3d我看过引擎4.7的c++代码,也垃圾的很,甚至没有ue4引擎层写的好,也就是u3d选对了,应用层使用c#,要不,我估计也凉了, u3d有开源代码的,网上找找,总能找到,但引擎层,其实都那么回事,如果要找源码,就看ue4吧,还方便, 在一些方面,我感觉ue4是比u3d合理的,比如minmap的使用上,状态机系统等
- 说下,编辑器,ue4 做编辑器,就是屎海了呛屎,还不让换气的,写各宏定义写法,控件极其杂乱,slate类也是多到发麻,传个icon,可能也要一个类去管理,你看下u3d的编辑器,不会玩的人,一上午能明白了,还能封装局部控件,ue4也能封装,但成本极高,需要自己好好的设计类调用。 再加上u3d Odin加持,感觉做工具,比做逻辑都轻松,既然复杂点的,地形编辑什么的,其实官方的c#封装源码,你也可以看到,极其的易读,想改,其实也可以反射重写,但成本也比较高,不过,可以把源码分离出来,自己改一个也不错。 原装的u3d地形编辑这块,也是个垃圾。总体来说,u3d还是完胜。
- 说下打包,资源分离,ue4还没有接触到,不过,感觉u3d的ab方式,已经很方便了,后来addressable都是多此一举,自己封装ab,还能加密,还方便管理, 打包更是了,u3d基本后期都是一键打包工具,编译时间,也稍长,但打包失败率,应该不高吧,如果不使用il2cpp, 那更快的飞起,不过感觉 u3d,以后可以慢慢的把llvm集成上,这玩意,以后主流,其实llvm在mono层就是一个宏标记,在xcode上,也是默认带的,但你集成到编辑器应该也不难吧。
总结下吧,我虽然相信ue4未来大游戏的主流,但u3d的天然好用,肯定也是会保持很长的地位,ue5没玩,但估计国内能玩的动的没几个团队吧,u3d现在国内正胜,应该好好珍惜现在的环境, 有的时候想,程序员,写代码还是写u3d的就好,学习代码可以看ue4的,或者是使用ue4引擎的功能学习,但写代码一定要是u3d的,因为写ue4真的太痛苦了,继续写编辑器了!诶! |
|