他のクラスの変数を参照したいのですが、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) {
;
}
}