由于简单的旋转脚本,UE4崩溃

时间:2018-03-03 07:50:01

标签: c++ unreal-engine4

我制作了一个简单的脚本,就像在视频教程中一样。它编译没有错误,当我按下播放按钮时,引擎崩溃。为什么会这样?

enter image description here

·H

#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Components/StaticMeshComponent.h"
#include "MyActor.generated.h"

UCLASS()
class ROTATION_API AMyActor : public AActor
{
    GENERATED_BODY()

public: 
    AMyActor();

protected:
    virtual void BeginPlay() override;

public: 
    virtual void Tick(float DeltaTime) override;
};

的.cpp

#include "MyActor.h"

AMyActor::AMyActor()
{
    PrimaryActorTick.bCanEverTick = true;

}

void AMyActor::BeginPlay()
{
    Super::BeginPlay();

    FString a = GetOwner()->GetName(); // ERROR
}

void AMyActor::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);
}

1 个答案:

答案 0 :(得分:2)

为防止崩溃,您应该检查nullptr。

auto Owner = this->GetOwner();
if (Owner)
{
  //use Owner
}

这至少可以让你打印一些日志来追踪问题。问题本身很可能是因为您的AActor派生类没有所有者(因为它不是另一个类的组件)。如果您要获取this AActor的名称,可以拨打this->GetName()