返回

轻松驾驭 UE4 C++:静态网格导入指南(三)

前端

引言

欢迎来到最简单的虚幻引擎 4 (UE4) C++ 教程的第三部分,我们将继续深入探讨如何在 C++ 中导入静态网格文件。在这篇文章中,我们将指导您完成创建 Actor 子类的过程,以便为场景添加静态网格文件。做好准备,踏上 C++ 开发之旅的又一步吧!

创建 Actor 子类

首先,让我们创建一个名为 "AddMeshFromFile" 的新 Actor 子类。这将成为我们用于向场景中添加静态网格文件的基础。为此,请执行以下步骤:

  1. 在您的项目中,右键单击内容浏览器,然后选择 "Blueprints" > "Add New Child Blueprint Class"。
  2. 在 "Create Blueprint from Class" 窗口中,选择 "Actor" 作为父类。
  3. 在 "Blueprint Options" 选项卡中,为您的新类输入名称 "AddMeshFromFile"。
  4. 单击 "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);
}

解释

在这个修改后的代码中,我们执行了以下操作:

  1. 包含了 "StaticMeshComponent.h" 头文件。
  2. 在构造函数中创建了一个静态网格组件,并将其附加到根组件。
  3. 使用 "ConstructorHelpers::FObjectFinder" 类加载静态网格文件。
  4. 如果加载成功,将加载的静态网格文件分配给静态网格组件。

编译并测试

编译并运行您的项目以查看添加的静态网格文件是否出现在场景中。它应该出现在您在加载静态网格文件时指定的坐标处。

结论

恭喜您!您已经成功地使用 C++ 在 UE4 场景中添加了静态网格文件。我们希望本教程使您对 C++ 开发有了更深入的了解。

要深入了解 UE4 C++ 开发,请查看 Epic Games 的官方文档和社区论坛。继续学习和探索虚幻引擎的强大功能!