前置主题
此页面假定您已掌握以下主题的前置知识。请在继续之前先阅读它们。
安装虚幻引擎
内容浏览器UI
设置虚幻引擎的Visual Studio
在本快速入门指南中,你将学到如何在虚幻引擎中设置C++项目及在Visual Studio中编写首个C++ gameplay类。学完本教程后将了解如何进行下列操作:
创建新的C++项目
用C++创建新的Actor类
在开发环境中编辑该C++类,添加可视化展示和功能
编译项目
在虚幻编辑器中测试新Actor
本指南假定已将Visual Studio设为编程环境。如未设置,请参见为虚幻引擎设置Visual Studio 了解Visual Studio安装和设置说明,以便将其用于虚幻引擎编程。我们还假定你在开始学习本指南前对使用 虚幻编辑器 有一定了解,但为方便起见,我们将逐一介绍从编辑器创建和管理C++类的所有必要步骤。本指南的最终产物将是一个 在半空中轻盈地漂浮并不断旋转的立方体,让你在学习使用开发环境进行编程时拥有一个用来测试的简单对象。
. 必要设置
启动 虚幻编辑器。在 项目浏览器 窗口弹出后,点击 游戏 分类并选择 空白 模板。确保已启用了 C++ 和 初学者内容包,选择项目的 保存位置(Save Location) 和 名称,然后点击 创建项目(Create Project)。在本示例中,我们将项目命名为QuickStart。
此操作将自动创建简单的空白项目,在解决方案中只有基本C++代码,而且其会自动在虚幻编辑器及Visual Studio中打开。
创建新C++类
在 虚幻编辑器 中,点击 文件(File) 下拉菜单,然后选择 新建C++类…(New C++ Class…) 命令。
2此时将显示 选择父类(Choose Parent Class) 菜单。可以选择要扩展的现有类,将其功能添加到自己的类。选择 Actor,因为其是可在场景中放置的最基本对象类型,然后点击 下一步(Next)。
3在 为新Actor命名(Name Your New Actor) 菜单中,将Actor命名为 FloatingActor,然后点击 创建类(Create Class)。
. 编辑C++类
现在我们已创建C++类,将切换到Visual Studio并编辑代码。
在 Visual Studio 中,找到默认情况下显示在窗口左侧的 解决方案浏览器,然后用其找到 FloatingActor.h。在项目中,它将位于 Games> QuickStart > Source > QuickStart 下。
2双击 FloatingActor.h 打开它,并在文本编辑器中将它放到前台。
(注:要加上 #include “Components/StaticMeshComponent.h” 否则会报错)
此为 标头 文件。可以将它视作C++类的目录之类的东西。 要开始编译任何新功能,必须首先声明在此文件中使用的所有新 变量 或 函数。
要在Float.h里面添加
#include "Components/StaticMeshComponent.h"
此处为常用的头文件
3在 AFloatingActor() 的声明下面添加下列代码:
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* VisualMesh;
这里声明的是 StaticMeshComponent,它将担当对象的视觉表示。请注意,它使用 UProperty 宏,这使它在虚幻编辑器中可见。
4现在打开 FloatingActor.cpp,在 AFloatingActor::AFloatingActor() 中将下列代码添加到右大括号前:
VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
VisualMesh->SetupAttachment(RootComponent);
static ConstructorHelpers::FObjectFinder<UStaticMesh> CubeVisualAsset(TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube"));
if (CubeVisualAsset.Succeeded())
{
VisualMesh->SetStaticMesh(CubeVisualAsset.Object);
VisualMesh->SetRelativeLocation(FVector(0.0f, 0.0f, 0.0f));
}
5在 AFloatingActor::Tick(float DeltaTime) 中将下列代码添加到右大括号前:
FVector NewLocation = GetActorLocation();
FRotator NewRotation = GetActorRotation();
float RunningTime = GetGameTimeSinceCreation();
float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f; //Scale our height by a factor of 20
float DeltaRotation = DeltaTime * 20.0f; //Rotate by 20 degrees per second
NewRotation.Yaw += DeltaRotation;
SetActorLocationAndRotation(NewLocation, NewRotation);
我们在 Tick 函数中添加要实时执行的代码。在此例中,它将使立方体在上下浮动的同时旋转。
(注:
要添加头文件
#include "UObject/ConstructorHelpers.h"
#include "UObject/Object.h"
)
然后生成编辑,成功之后返回ue4。
点击屏幕顶部工具栏中的 编译(Compile) 按钮。
提示:一定要在尝试编译前保存工作,否则在代码中做的更改将不会生效。
在 虚幻编辑器 中,转到 内容浏览器,展开 C++类(C++ Classes),然后找到 FloatingActor。它将位于与项目同名的文件夹中,在范例中是QuickStart。
点击 FloatingActor 并将它拖进 透视视口 来创建FloatingActor的实例。它将在 世界大纲视图 中作为“FloatingActor1”处于被选中状态,它的属性将显示在 细节(Details) 面板中。
在 FloatingActor1 的 细节(Details) 面板中,将Actor的 位置(Location)设置为(-180、0、180)。此操作会将其放置在默认场景中桌子的正上方。
或者也可使用移动小工具手动将其移到该处。
按屏幕顶部的 在编辑器中运行(Play In Editor) 按钮。
最后的结果是立方体在桌子的上方上下浮动。