写给C++程序员
假如是编写蓝图,你只需要用到虚幻引擎。你所需的所有功能已包括在内。
假如要编写C++代码,你还要在Windows上下载Visual Studio,或在macOS上安装Xcode。当你首次在虚幻引擎中创建新的C++项目(或将C++代码添加到现有项目)时,虚幻引擎将自动创建Visual Studio项目文件。
从虚幻引擎项目访问Visual Studio的方法有以下两种:
-
在 内容浏览器(Content Browser) 中, 双击 C++类,在Visual Studio中打开。
-
从主菜单,转至 工具(Tools) > 打开Visual Studio(Open Visual Studio) 。仅当你的项目包含至少一个C++类时,才会显示此选项。
虚幻引擎中有一点很不同:有时必须手动刷新Visual Studio项目文件(例如,下载新版虚幻引擎后,或手动更改磁盘上的源文件位置时)。要这样做,可以采用以下两种方法:
-
从虚幻引擎的主菜单,转至 工具(Tools)> 刷新Visual Studio项目(Refresh Visual Studio Project) 。
-
右键点击 项目的目录中的 .uproject 文件,并选择 生成Visual Studio项目文件(Generate Visual Studio project files) 。
编写事件函数(Start、Update等)
如果你用过MonoBehavior,那你应该熟悉 Start 、 Update 和 OnDestroy 等方法。下面比较了Unity的行为与对应的虚幻引擎Actor和组件的行为。
在Unity中,某个基本组件的代码可能是这样:
public class MyComponent : MonoBehaviour
{
void Start() {}
void OnDestroy() {}
void Update() {}
}
在虚幻引擎中,你可以在Actor本身上编写代码,而不是仅仅对新组件类型编码。这实际上十分常见且有用。
虚幻引擎Actor有一组类似于Unity的 Start 、 OnDestroy 和 Update 函数的方法。如下所示:
C++
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
// 游戏开始时调用。
void BeginPlay();
// 销毁时调用。
void EndPlay(const EEndPlayReason::Type EndPlayReason);
// 每帧调用以更新此Actor。
void Tick(float DeltaSeconds);
};
蓝图
虚幻引擎中的组件包含不同的函数。下面是一个基本示例:
C++
UCLASS()
class UMyComponent : public UActorComponent
{
GENERATED_BODY()
// 在创建所属Actor之后调用
void InitializeComponent();
// 在销毁组件或所属Actor时调用
void UninitializeComponent();
// 组件版的Tick函数
void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction);
};
蓝图
记住,在虚幻引擎中,你必须调用方法的父类版本。
例如,在Unity C#中,可能是调用 base.Update(),但在虚幻引擎C++中,你将使用 Super::TickComponent():
void UMyComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
// 此处添加自定义更新内容
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}
在C++中,一些类使用前缀 A ,而另一些类则使用前缀 U。A 表示Actor子类,而 U 表示 Object 子类。另一个常用前缀是 F ,它用于大部分普通数据结构和非UObject类。