在资源上,Unity3D是非常齐全的。但Unreal Engine也在追赶,Epic Games 最近发布了一包Quixel MegaScans资源,包含了Quixel库中的10000种贴图材料。
2、指导文档和培训
Unity3D和Unreal Engine 4都有非常详细的XR开发指导文档:
U3D的:
https://docs.unity3d.com/Manual/XR.html
UE4的:
https://docs.unrealengine.com/en-US/SharingAndReleasing/XRDevelopment/VR/index.html
但真正有教学价值的是培训课程。虽然二者都有XR的培训课程,但Unity的课程数量要明显更多。比如,Udemy上有大约2200门Unreal开发课程,而Unity有5500门。虽然大多数课程都是教你开发游戏的,但一些基础知识也可以用于其它应用开发。对于商业和企业开发,则倾向于用Unity,因为它的资源丰富、容易上手。
3、开发者社区
近年来,开发者们在不断扩展XR内容的边界。虽然两款引擎都尽力为开发者提供了指导文档和培训课程,但开发者社区也是不容忽视的因素。Bug、错误、崩溃、看不懂的谜之代码每天都在发生,谁来帮你解决这些问题?尤其是你独立开发的时候?——其他开发者。
这就是开发者社区至关重要的原因,尤其是在新兴的XR行业。Unity3D存在时间比Unreal长,所以自然就有更大的开发者社区。比如,Unreal社区有12000 的C 编程话题,4600 个话题扩展到了AR/VR开发。而Unity社区有128000 编程话题,6100 扩展到了VR开发。也就是说,发生问题时,在Unity社区中更可能找到帮你解决问题的人。
还有一点,UE4社区分为用Blueprint的非编程开发者和用C 的开发者,且前者占多数,大约是后者的2倍。用C 的不会用Blueprint,用Blueprint的也不懂C ,两种人群割裂开来,无法解决对方人群的问题。反过来Unity的开发者都用C#,所以有经验的开发者可以很容易解决初学者的问题。这也是我们一般从Unity开始教XR开发的原因。
4、开发流程
两个引擎在XR开发上有许多共同点,主要的区别有以下几点。
1. C# VS C 或Blueprint
这是两款引擎最大的区别了,虽然Unity还可以用一些其它语言,但C#是主要的。C#和C 哪个更好,已经争论了多年,坦白地说,这个争论没有意义。两种语言都能用于XR开发,就看哪个你用得顺手了。然而对于初学者,C#要更容易上手。
我们注意到,用UE4需要建两个脚本文件,一个用于声明,一个用于定义。看起来是有点复杂。下面是用Blueprint的脚本系统,不需编程:
几乎UE4的指导文档中的每一部分都有C 和Blueprint例子。学Blueprint非常容易,但要想使用UE4的大部分功能,建议学习C ,把Blueprint的结果和代码联系起来。
小贴士:Unity3D也有个小插件:Playmaker,和Blueprint一样是可视化脚本。
C#的另一个优势是,90%的VR/AR开发公司都用C#,意味着有更多的代码和测试结果参考。
5、 平台源代码资源:Unreal Engine VS Unity3D
这两个平台的代码资源都足够丰富,提供的工具和工作流对于XR开发来说绰绰有余,无需修改。然而,二者还是有一个重要区别的——UE4是开源引擎,U3D不是。这就意味着,你可以根据需要修改UE4的源码,还免费。然而U3D的代码虽然也能看,但是要想编辑就需要有企业许可了。虽然开源对一些大作来说有吸引力,但对于小开发团队,需要认真考虑是否真的有必要修改引擎源码,否则一个小小的修复升级就可能带来雪崩式Bug。如果你只需要U3D的一些常用功能,大多数情况下平台的原装脚本和插件就足够了。
6、图形效果对比
如果我们回到2012年,UE4刚刚发布的时候,它的图形效果绝对空前。当U3D主要专注于独立游戏和移动游戏开发时,UE4主要用于3A游戏开发。从那时起,就一直传言:如果你想要写实主义画面,就要用UE4。
疑问:如果你想要极佳的画面,就选UE4?
解答:UE4和U3D都能创作写实主义场景,都提供创作极佳视觉效果的工具包。
也就是说,UE4在图形效果上是有一点优势的。所有在UE4上可以拿来就用的项目,比如资源、场景、教学项目都看起来效果更好。U3D资源你可能需要对获取到资源稍作调整来优化效果。渲染、光照、材料...... 一开始,在UE4中需要的这些设置工作要比U3D少。然而,如果你用Blueprint,复杂的流程节点会导致显示出错。大量节点、复杂的数学模型、循环迭代会导致运行变慢。
下面是个例子,相比于C ,用Blueprint会造成FPS降低。不过,启用多线程和本地化进程后,这种差异似乎被消除了。
用C 和Blueprint的效果对比
总的来说,你完全可以用U3D达到同样的效果。这一点上两个引擎都可以在视觉效果上表现完美。