同时看过 unreal4 和 Unity 源代码的人觉得哪个引擎架构更好?
UE VS U3D
技术策略上
U3D技术策略是很保守的,发出来的featurelist测试覆盖率无可非议,开发者无需多少新功能的熟悉测试成本。
UE4的技术策略是激进的,发出来的featurelist能给人很高的预期,但是测试覆盖率往往不高,修修补补的成本需要开发者自付。
工具链上
从工具链的角度看,UE4 较好。以动画控制为例: UE4 的动画控制,逻辑和状态机是绑定的,在较大的项目中,不会出现找不到动画控制的触发逻辑,或者想增加动画控制逻辑时不知道如何组织代码结构的问题。Unity 的 AnimatorController 则将变量通过 Animator 暴露给 GameObject,由 MonoBehavior 操作,并且操作的过程是以硬编码的方式做的。
美术/设计的效率上
因为ue的可视化编程,对美术人员和策划人员进行关卡设计、场景设计、剧情设计等等工作,极大的提升了开发效率。(PS:什么是可视化编程,可视化编程即不需要写一行代码,通过线框图的连接就可以做出酷炫的游戏效果。)
开源问题上
Unity不开源,学习游戏引擎,怎么用好它和能够研究到它的原理是完全不同的概念,尤其是做项目时万一遇到引擎BUG,Unty很难从根本上解决问题。无法个性化操作的问题导致了Unity在遇到需要修改引擎的问题时显得捉襟见肘。
Ue4开源,代码的开源直接影响了UE4本身的入手难度,想要精通UE4或许很困难,但是如果想要通过UE实现一些功能,取用社区现成的代码,便可以直接获益。解决了小白掌握难得问题。对于高端游戏制作来讲,开源的结果就是可以更加个性化地修改引擎,将游戏优化做到最佳状态。
安装、调试、打包方面
Unity 3D安装、调试和打包方便,配置VR项目十分简单,文档完善。Unity3D配套了很多东西供开发者使用,基本可以靠Marketplace买来的东西搭建原型,甚至某些最终业务的核心组件也可以用买来的东西,极大的降低了开发成本。比如你可以把整个Material换成Alloy、用Ngui替代UI系统,如果你要做个赛车游戏,你能找到从模型、音效、材质,到控制系统等一切。
Ue4安装、调试和打包不方便,需要的时间明显超过Unity很多。
最后总结:UE4 的工具链完善,框架也更合理; Unity 提供轻量灵活的底层。二者各有各的侧重点,并且在细分领域越来越稳固。