.h
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
//#include "MyPrimitiveComponent.h"
//#include "Components/StaticMeshComponent.h"
UCLASS()
class C_TEST_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor();
//virtual void OnConstruction(const FTransform& Transform) OVERRIDE;
UPROPERTY(VisibleDefaultsOnly)
USceneComponent* DefaultSceneRoot;
UPROPERTY(VisibleDefaultsOnly)
UStaticMeshComponent* Mesh;
//UPrimitiveComponent* Primitive;
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
virtual void OnConstruction(const FTransform& Transform) override; //启用构造脚本
};
.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyActor.h"
AMyActor::AMyActor()
{
// 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;
DefaultSceneRoot = CreateDefaultSubobject<USceneComponent>("DefaultSceneRoot"); //创建Root组件
Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMesh")); //创建Mesh组件
ConstructorHelpers::FObjectFinder<UStaticMesh>meshAsset(TEXT("/Engine/BasicShapes/Cube.Cube")); //根据路径构建一个meshAsset
Mesh->SetStaticMesh(meshAsset.Object); //把meshAsset赋值到Mesh变量
//Primitive = CreateDefaultSubobject<UPrimitiveComponent>(TEXT("Primitive"));
}
void AMyActor::OnConstruction(const FTransform& Transform)//调用构造脚本
{
Mesh->SetWorldLocation(AMyActor::GetActorLocation());//设置Mesh的世界位置为MyActor的位置
}
// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AMyActor::Tick(float DeltaTime)
{
}