C++で作成したクラス型の変数をBPで使用する方法

現在C++でゲーム開発をしております。以下の行動をとるとなぜかBPの変数のクラスの型が変わってしまいます。解決方法を教えていただきたいです。(Live Codingを使用しています)

①BPで変数を用意し、その型をC++で作成したクラスに指定します


以下がC++で作成したクラスです
UnitBase.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "UnitBase.generated.h"

class CombatComponent;

UCLASS()
class SOULS_API AUnitBase : public ACharacter
{
	GENERATED_BODY()

public:
	// Sets default values for this character's properties
	AUnitBase();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;

	// Called to bind functionality to input
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

};

UnitBase.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "UnitBase.h"
#include "CombatComponent.h"

// Sets default values
AUnitBase::AUnitBase()
{
 	// Set this character to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	PrimaryActorTick.bCanEverTick = true;

}

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

// Called every frame
void AUnitBase::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

// Called to bind functionality to input
void AUnitBase::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

}

②コンパイルした後、すべて保存してUnrealEditorを閉じる
③再度立ち上げ、対象のBPを開くと型が変わってしまっている


④型を戻そうとしても一覧に表示されず、再度コンパイルした際に表示される

LiveCodingはあくまでも その場でのパッチ を作って適用している形になります
なので、UnrealEditorが終了した時点でパッチの適用はなくなります

LiveCodingでC++クラスを編集した場合、ある程度動作確認した段階で、LiveCodingを切った状態(UnrealEditorを終了した状態)でビルドすることをおすすめしています
こうすることで、変更がLiveCodingパッチ側ではなく、メインモジュールの側に組み込まれるため、正常にロードできるようになります

1 Like

いつもありがとうございます。
LiveCoding自体をよく分かっていなかったので助かりました。
上記の件と関係ないのかもしれませんが、Buildをしようとしたところ以下のようなエラーになりました。

Build started…
1>------ Build started: Project: Souls, Configuration: Development_Editor x64 ------
2>------ Skipped Build: Project: UE5, Configuration: BuiltWithUnrealBuildTool Win64 ------
2>Project not selected to build for this solution configuration
1>Using bundled DotNet SDK
1>Log file: C:\XXXXX\Log.txt
1>UnrealBuildTool : error : Unable to build while Live Coding is active. Exit the editor and game, or press Ctrl+Alt+F11 if iterating on code in the editor or game
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(44,5): error MSB3073: The command ““C:\Program Files\Epic Games\UE_5.0\Engine\Build\BatchFiles\Build.bat” SoulsEditor Win64 Development -Project=“C:\XXXXX\Unreal Projects\Souls\Souls.uproject” -WaitMutex -FromMsBuild” exited with code 6.
1>Done building project “Souls.vcxproj” – FAILED.

調べたところ、あまり有益な情報は出てこず、以下スレッドを参考にUPROPERTYの行にスペルミスがないかなど確認したのですが、特に見つからず
一旦新たにプロジェクトを作成して、そちらはうまくいくのか試したところ、新たにC++のクラスを作成した段階でBuildすると同じエラーになりました。
解決策ご存知でしょうか?

すいません、仰る通りEditorを閉じてビルドすると問題なく通りました!ありがとうございます