虚幻引擎:是否可以主要使用C++/脚本而不是蓝图来完成?

Unreal Engine: Can it be done primarily with C++/scripting instead of Blueprints?

本文关键字:脚本 C++ 是否 引擎      更新时间:2023-10-16

我正在考虑游戏引擎的选择。我做了双摇杆射击教程。最让我沮丧的是,大多数编程都是在蓝图中完成的,这是丑陋的(这里很主观,但不会持续很长时间)图形编程。游戏的整个逻辑都是用盒子完成的......我觉得这太可怕了!我甚至逃离了Qt Designer,用纯粹的编码和布局来设计我的GUI。

回到客观上,问题是"双摇杆射击游戏"是一款非常简单的游戏。然而,最后的图表非常复杂和大。如果没有问题,我发现这很难维护,例如使用 git 或任何其他版本控制工具跟踪随时间推移的变化。与C++不同,维护大型代码是一个非常古老的问题,可以通过多种方式解决,版本控制系统可以很好地使用它。

我的问题是:教程中的同一游戏(或任何一般游戏)是否可以使用部署在C++中的所有逻辑(或可能少于 5% 的蓝图)来完成,而不是将其全部部署在蓝图图中(如双摇杆射击游戏)?鉴于我不是虚幻引擎方面的专家,我认为专家对这个问题有一个很好的回答,他可以解释纯粹用C++可以做什么和不能做什么,以及为什么这样做是好是坏。

根据我对UE4的经验,我会回答:是的。

主蓝图节点和对象是使用C++创建的,通常可通过C++引擎 API 访问。事实上C++版本的BP节点通常使用起来更复杂(即具有更多可能的参数)。

我个人发现,游戏的任何重要方面,如网络、UI、游戏逻辑和关卡过渡都可以在C++完成。

(...)以及为什么这样做是好是坏。

UE4的创建者表示,蓝图系统的开发是为了帮助美术师和非开发者使用引擎。蓝图系统在游戏逻辑原型制作中也非常有用。

由于蓝图的弹性和创建时间,许多开发人员(包括我自己)决定使用混合方法,当你在C++中创建低级、复杂或昂贵的代码并将其API公开给蓝图系统时。它有助于将核心代码与高级函数分开,高级函数是许多更改和调整的主题(优点:BP更容易调试,编译时间要快得多)。

我发现混合 BP 和 C++ 的一个困难是在C++此处讨论更详细的代码中使用 BP 类的问题。

如果没有问题,我发现这很难维护,例如使用 git 或任何其他版本控制工具跟踪随时间推移的变化。

UE4有蓝图合并工具,但我从未使用过它。

从一个拥有 20 年C++经验但只有几个月 UE4 实践的程序员的角度来看......我会说是的,但不要。

我同意你关于蓝图的看法 - 需要一两行代码的简单操作需要五到六个蓝图节点,而作为程序员,它更难阅读。 你可以用虚幻引擎做任何C++的事情。但是你必须学习和使用现有的引擎代码语料库,而虚幻是一个复杂而强大的野兽。即使有多年的C++经验,我发现做简单的事情真的很困难,因为引擎要求以某种方式完成它们。

老实说,对于像双摇杆射击游戏这样的东西,我完全推荐Unity。

我不知道你提到的游戏,但一个主要在蓝图中开发的项目是一场噩梦,除非我们谈论的是非常简单的东西。如果你C++足够流利,就没有理由不选择这种方式。

但是,大多数时候,您都想在蓝图中执行一些操作,例如UMG控件,Ai(行为树和黑板)等。