UE4的QuickStart内容介绍
CoreMinimal
在创建项目时,UE4会自动包含头文件"CoreMinimal.h",这里进行展开说明、
CoreMinimal头文件包含一套来自UE4核心编程环境的普遍存在类型(包含FString、FName、TArray等)。
CoreMinimal头文件位于\Engine\Source\Runtime\Core\Public\CoreMinimal.h中,首先被多数引擎头文件包含。
GameFramework.h是默认的框架类,它包含了许多例如Actor、Pawn等需要被继承的核心的类。在#include"GameFramework/Actor.h"中包含了Actor类所用的头文件.
#include"FloatingActor.generated.h"包含了UE4反射机制生成的所有反射数据,这个头文件的包含必须在所有头文件的最下面。
UE4反射级制
反射是指在运行状态下,对于任意一个实体类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。这种动态获取信息以及动态调用对象方法的功能称为是语言的反射。
UCLASS()和GENERATED_BODY()
UCLASS():在当前阶段,可以暂时将UCLASS()认为是一个标识符,表示这个是类,便于UE4识别。
GENERATED_BODY(): 在构建项目时,UE4生成了许多代码。可以将GENERATED_BODY()视为一个标记,在这个标记处替换为该类型生成的所有必要的样板代码。
void AFloatingActor::BeginPlay()
{
Super::BeginPlay();
}
在这个项目中,类AFloatingActor继承自AActor,Super::的意思是在执行AFloatingActor::BeginPlay()的第一步先去调用AActor::BeginPlay()方法
AFloatingActor::AFloatingActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
//创建的网格体VisualMesh和跟组件是相互分离的
//本行代码就是将创建的网格体附加到根组件上形成一个整体。
VisualMesh->SetupAttachment(RootComponent);
//ConstructorHelpers是ObjectBase.h中定义的特殊命名空间,例如为资源或类寻找引用、以及创建并寻找组件的助手模板
//其实就是为了便于查找资源
//本段代码就是查找相应地址的资源文件夹下查找资源并加载
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));
}
}
// Called every frame
void AFloatingActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
//获取当前物体位置和旋转
FVector NewLocation = GetActorLocation();
FRotator NewRotation = GetActorRotation();
//当前物体的运行时间
float RunningTime = GetGameTimeSinceCreation();
float DeltaHeight = (FMath::Sin(RunningTime - DeltaTime) - FMath::Sin(RunningTime));
NewLocation.Z += DeltaHeight * 20.0f;
float DeltaRotation = DeltaTime * 20.0f;
NewRotation.Yaw += DeltaRotation;
SetActorLocationAndRotation(NewLocation, NewRotation);
}
浙公网安备 33010602011771号