関連ブログ
- [UE4][UE5]開発環境の容量を少しでも減らす 2024.08.14UE
- [UE5] PushModel型のReplicationを使い、ネットワーク最適化を図る 2024.05.29UE
- [UE5]マテリアルでメッシュをスケールする方法 2024.01.17UE
CATEGORY
2021.12.26UE4UE/ 初心者向けUE/ C++UE/ Blueprint
執筆バージョン: Unreal Engine 4.27 |
こんにちは。エンジニアの小倉です。
UE4のデバッグでは、主にブレークポイントなどを使います。しかし、例えば同じBlueprintのActorがレベルに大量に配置されているときなど、ブレークポイントを貼っても全てのインスタンスに対してブレークされてしまい、デバッグが難しいことがあります。
そこで、今回はゲーム中に存在する複数のインスタンス(例えばレベルに配置されたActorなど)の中から1つのインスタンスのみをデバッグする方法を紹介します。
Blueprintのデバッグ方法は、公式ドキュメントに説明があります。
例えば、以下のようなActorがレベルに複数配置されているとします。
Blueprintでインスンタンスごとにデバッグしたいときは、BlueprintのToolBarにある『Debug Filter』を変更します。
まず、複数配置されているアクターの中から、デバッグしたいアクターをViewport上で選択します(PIE中の場合は、Ejectしてからアクターを選択します)。
この状態で選択しているアクターのBlueprintを開き、Debug Filterからデバッグしたいインスタンスを選びます。Viewportで選択しているインスタンスには末尾に(selected)という表記がされます。
Debug Filterにインスタンスを指定すると、以下のようにデバッガの挙動が変わります。
この挙動を使用すると、複数のインスタンスがあったとしても1つのインスタンスを対象にデバッグを行うことができます。
C++コードをデバッグするときも、基本的にはブレークポイントを使用します。BlueprintではDebug Filterを使いましたが、C++の場合は条件付きブレークポイントでデバッグ対象のインスタンスをフィルタリングします。
Actorの場合は、ActorLabelを使用して以下のような条件式にします(参考)。以下の例では、ワールドアウトライナ上で名前がMyActor1となっているアクターのTickでのみブレークします。
1 |
wcscmp((wchar_t*)ActorLabel.Data.AllocatorInstance.Data,L"MyActor1") == 0 |
このようなブレークポイントを貼ると、条件を満たしたアクターでのみブレークすることができます。