返回
轻松驾驭 UE4 C++:静态网格导入指南(三)
前端
2023-12-31 14:35:59
引言
欢迎来到最简单的虚幻引擎 4 (UE4) C++ 教程的第三部分,我们将继续深入探讨如何在 C++ 中导入静态网格文件。在这篇文章中,我们将指导您完成创建 Actor 子类的过程,以便为场景添加静态网格文件。做好准备,踏上 C++ 开发之旅的又一步吧!
创建 Actor 子类
首先,让我们创建一个名为 "AddMeshFromFile" 的新 Actor 子类。这将成为我们用于向场景中添加静态网格文件的基础。为此,请执行以下步骤:
- 在您的项目中,右键单击内容浏览器,然后选择 "Blueprints" > "Add New Child Blueprint Class"。
- 在 "Create Blueprint from Class" 窗口中,选择 "Actor" 作为父类。
- 在 "Blueprint Options" 选项卡中,为您的新类输入名称 "AddMeshFromFile"。
- 单击 "Create" 按钮完成创建。
代码生成
当您创建新的 Actor 子类时,UE4 会自动生成一个头文件和一个源文件。默认情况下,它们将如下所示:
头文件(AddMeshFromFile.h):
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AddMeshFromFile.generated.h"
UCLASS()
class CCPPUE4TUTORIAL_API AAddMeshFromFile : public AActor
{
GENERATED_BODY()
};
源文件(AddMeshFromFile.cpp):
#include "AddMeshFromFile.h"
// Sets default values
AAddMeshFromFile::AAddMeshFromFile()
{
// 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;
}
// Called when the game starts or when spawned
void AAddMeshFromFile::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AAddMeshFromFile::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
添加静态网格文件
现在,让我们修改源文件以添加静态网格文件:
#include "AddMeshFromFile.h"
#include "StaticMeshComponent.h"
// Sets default values
AAddMeshFromFile::AAddMeshFromFile()
{
// 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;
// Create a static mesh component
StaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>("StaticMesh");
StaticMeshComponent->SetupAttachment(RootComponent);
// Load the static mesh from a file
static ConstructorHelpers::FObjectFinder<UStaticMesh> StaticMeshAsset(TEXT("/Game/StaticMeshes/MyStaticMesh"));
if (StaticMeshAsset.Succeeded())
{
StaticMeshComponent->SetStaticMesh(StaticMeshAsset.Object);
}
}
// Called when the game starts or when spawned
void AAddMeshFromFile::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AAddMeshFromFile::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
解释
在这个修改后的代码中,我们执行了以下操作:
- 包含了 "StaticMeshComponent.h" 头文件。
- 在构造函数中创建了一个静态网格组件,并将其附加到根组件。
- 使用 "ConstructorHelpers::FObjectFinder" 类加载静态网格文件。
- 如果加载成功,将加载的静态网格文件分配给静态网格组件。
编译并测试
编译并运行您的项目以查看添加的静态网格文件是否出现在场景中。它应该出现在您在加载静态网格文件时指定的坐标处。
结论
恭喜您!您已经成功地使用 C++ 在 UE4 场景中添加了静态网格文件。我们希望本教程使您对 C++ 开发有了更深入的了解。
要深入了解 UE4 C++ 开发,请查看 Epic Games 的官方文档和社区论坛。继续学习和探索虚幻引擎的强大功能!