UE4 C++生成actor例子
时间: 2023-07-11 14:48:44 浏览: 84
以下是一个简单的UE4 C++生成Actor的例子,假设你已经创建了一个新的C++项目:
1. 创建一个新的C++类,继承自AActor。例如,我们创建一个名为MyActor的类:
```cpp
UCLASS()
class MYPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
virtual void BeginPlay() override;
virtual void Tick(float DeltaTime) override;
};
```
2. 在MyActor.cpp文件中实现构造函数和BeginPlay函数:
```cpp
AMyActor::AMyActor()
{
// 设置Actor的根组件
RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));
// 创建一个静态网格组件
UStaticMeshComponent* MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent"));
MeshComponent->SetupAttachment(RootComponent);
// 加载静态网格
constructorHelpers::FObjectFinder<UStaticMesh> Mesh(TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube"));
if (Mesh.Succeeded())
{
MeshComponent->SetStaticMesh(Mesh.Object);
}
}
void AMyActor::BeginPlay()
{
Super::BeginPlay();
// 在控制台输出Actor的位置
UE_LOG(LogTemp, Warning, TEXT("MyActor is at %s"), *GetActorLocation().ToString());
}
```
3. 在MyActor.cpp文件中实现Tick函数,使Actor在每帧旋转:
```cpp
void AMyActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// 每帧旋转Actor
FRotator Rotation = GetActorRotation();
Rotation.Yaw += DeltaTime * 100.f;
SetActorRotation(Rotation);
}
```
4. 在MyActor.h文件中添加头文件和构造函数声明:
```cpp
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Engine/StaticMesh.h"
#include "Components/StaticMeshComponent.h"
#include "MyActor.generated.h"
UCLASS()
class MYPROJECT_API AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
virtual void BeginPlay() override;
virtual void Tick(float DeltaTime) override;
private:
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Components", meta = (AllowPrivateAccess = "true"))
UStaticMeshComponent* MeshComponent;
};
```
5. 在你的场景中添加一个MyActor,例如在GameMode的BeginPlay函数中:
```cpp
void AMyProjectGameModeBase::BeginPlay()
{
Super::BeginPlay();
// 创建一个新的MyActor
AMyActor* MyActor = GetWorld()->SpawnActor<AMyActor>(AMyActor::StaticClass(), FVector(0.f, 0.f, 0.f), FRotator(0.f, 0.f, 0.f));
}
```
6. 运行游戏,你应该可以看到一个旋转的立方体Actor。
希望这个例子能够帮助你理解如何使用UE4 C++生成Actor!