1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UE4 C++ 参照クラスのポインタ取得

Posted at

他のクラスの変数を参照したいのですが、UE4をPLAYすると該当する参照ポインタがnullだと怒られます。
プログラムでは、確かに参照するポインタに何も設定していないように見えます。
そこで、参照するポインタに設定するようコンストラクタでコードを書きたいのですが、どのように描いたいいか
UE4もC++も初心者のためわかりません。

以下に参照する側のソースファイルを記述します。
参照される側については、通常のメンバ変数と記述しているだけです。
UPROPERTY(EditAnywhere, category = "Countdown")
int32 CountdownTime;

参照する側
AMyActor::Tick(float DeltaTime)メソッドにて
if (Countdown->CountdownTime < 1) {
      ;
}
で、他のクラスのメンバ変数を参照していますが、Countdownがnullだと怒られます。
確かにCountdownは、設定していませんので、コンストラクタで設定しようとしています。

どなたかお教えください。

以下参照する側ソースファイル
ヘッダーファイル MyActor.h
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"

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

public:
// Sets default values for this actor's properties
AMyActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;

UPROPERTY(EditAnywhere)
class ACountdown* Countdown;               //参照される側のクラスポインタ定義

};

コードファイル MyActor.cpp
#include "MyActor.h"
#include "Countdown.h"

// ACountdown cnt;

// Sets default values
AMyActor::AMyActor()
{
PrimaryActorTick.bCanEverTick = true;
//?? Countdown = CreateDefaultSubobject("Countdown");
//?? Countdown = (ACountdown*)GetDefaultSubobjectByName("Countdown7");
}

// Called when the game starts or when spawned
void AMyActor::BeginPlay()
{
Super::BeginPlay();
}

// Called every frame
void AMyActor::Tick(float DeltaTime)
{

// Super::Tick(DeltaTime);

if (Countdown->CountdownTime < 1) {

       ;
}
}

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?