最简单的 UE 4 C++ 教程 —— 获取场景中小兵的个数【九】

844 阅读1分钟

【原教程是基于 UE 4.18,我是基于 UE 4.25】

英文原地址

核心 API

GetWorld()->GetNumPawns()

接上一节教程,本教程将介绍 —— 如何在一个场景中获得小兵的总数。创建一个新的 C++ Actor 子类,并将其命名为 GetNumberOfPawns

头文件中不需要做任何事情,下面是最终的头文件。

GetNumberOfPawns.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "GetNumberOfPawns.generated.h"

UCLASS()
class UNREALCPP_API AGetNumberOfPawns : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	AGetNumberOfPawns();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

};

接下来,在我们的 BeginPlay() 函数中添加 GetWorld()->GetNumPawns() 。所有 actor 都可以访问 GetWorld() 函数。你可以在这里看到 UWorld 的所有的函数。

下面是我们最终的 .cpp 文件。

#include "GetNumberOfPawns.h"

// Sets default values
AGetNumberOfPawns::AGetNumberOfPawns()
{
 	// 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 AGetNumberOfPawns::BeginPlay()
{
	Super::BeginPlay();

	int32 MyPawns = GetWorld()->GetNumPawns();

	GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Green, FString::Printf(TEXT("Number of Pawns: %d"), MyPawns));
	
}

// Called every frame
void AGetNumberOfPawns::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);
}

运行效果如图