2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UE5 CreateDefaultSubobjectで作成したコンポーネントがBP上で見えなくなる現象について

Posted at

概要

UnrealEngine5 のC++にて CreateDefaultSubobject で作成したコンポーネント等がそのBPオブジェクト上では nullptr になることがあります。これは基本的な機能を親クラスのC++で作成し、運用はそれを継承したBPを使うケースにて稀に起こる現象と思われますが、この状態の復元を目指したメモ書きです。

更新履歴

日付 内容
2025/07/03 初版

参考

[UE5] CreateDefaultSubobject で生成したものがNullになる問題
量産されたアセットのプロパティ仕様を変更する

コンポーネントが見えなくなる現象について

任意のアクターをC++で作成し、そのコンストラクタにてコンポーネントの作成を行いました。

MyCharacter.h
UCLASS()
class AMyProject2Character : public ACharacter
, public IAbilitySystemInterface
{
	GENERATED_BODY()

// ...省略...

public:
	// コンポーネント
	UPROPERTY(VisibleAnywhere)
	TObjectPtr<class UAbilitySystemComponent> AbilitySystemComponent;
};
MyCharacter.cpp
// コントラクタ
AMyProject2Character::AMyProject2Character()
{
// ...省略...

	// コンポーネントの生成
	AbilitySystemComponent = CreateDefaultSubobject<UAbilitySystemComponent>(TEXT("AbilitySystemComponent"));
}

その後、継承したBPでの作業や親クラスのC++を変更したりしていたところ、該当のコンポーネントの詳細が表示されなくなってしまいました。

Example00.png

このコンポーネントは nullptr になっているらしく、Tickにて checkマクロを仕掛けるとここでブレークしてしまいました。

MyCharacter.cpp
void AMyProject2Character::Tick(float DeltaTime)
> {
> 	Super::Tick(DeltaTime);
> 
> 	check(AbilitySystemComponent);
> }

BPアセットがこのコンポーネントの値を nullptrとして持っておりそれがデシリアライズされた結果、このような状況になっているようです。

修正する方法について

BPを再度作成する

BPアセットを再度作成すると当然ながら確実に修正されます。しかしこの方法だと各種プロパティやBPコードなどは消えてしまうため手動でコピーする等の手間がかかります。他から参照されている場合、問題がでるかもしれません。

ブループリントの親クラスを変更する

BPの親クラスを変更する際にどうやらBPのシリアライズが行われるようなので、これを利用する方法でも良いようです。ただし変更した方の親クラスにないプロパティは当然消えるため一度、変更用のクラスを用意してから戻すということをすると手間はかかりますが安全です。

削除したコンポーネントの残骸がBPに残る現象について

こちらは最初の現象と逆で削除したコンポーネントがBP内に残ってしまうケースです、削除済コンポーネントを参照しようとして警告ログがでます。
こちらも親クラスの差し替え等で修正可能なようです。

まとめ

C++で基底クラスを作成しそれを親クラスとしてBPアセットを作る場合、C++クラス側の変更を行うとトラブルになるケースがあり、その解決を模索した結果です。
「アセット検証」というコンテキストメニューがあるのでここらへんで何とかできないものですかね。

2
0
0

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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?