DrawDebugPointやDrawDebugLineなどは一行で簡単な描画が可能ですが、クリアにする際にFlushPersistentDebugLines
を使って描画のクリアを行うと全ての描画がクリアされます。
DrawDebug系を使い個別に描画のクリアなどは可能でしょうか?
またDrawDebugでなくとも、簡単に描画・クリアすることのできる他の機能はありますか?
DrawDebugPointやDrawDebugLineなどは一行で簡単な描画が可能ですが、クリアにする際にFlushPersistentDebugLines
を使って描画のクリアを行うと全ての描画がクリアされます。
DrawDebug系を使い個別に描画のクリアなどは可能でしょうか?
またDrawDebugでなくとも、簡単に描画・クリアすることのできる他の機能はありますか?
お世話になっております。
>DrawDebug系を使い個別に描画のクリアなどは可能でしょうか?
DrawDebugHelpers に宣言されている DrawDebugLine 等により描画されたものについては個別のクリアができません。
ただし DrawDebugLine 等の関数で内部的に使用されている ULineBatchComponent::DrawLine 等では最後のパラメータ BatchID にて識別番号を設定でき、
ULineBatchComponent::ClearBatch 関数によって指定した番号の描画をクリアできます。
参考までに関数の宣言部分を抜粋しておきます。
`// LineBatchComponent.h
ENGINE_API virtual void DrawLine(
const FVector& Start,
const FVector& End,
const FLinearColor& Color,
uint8 DepthPriority,
float Thickness = 0.0f,
float LifeTime = 0.0f,
uint32 BatchID = INVALID_ID
);
/** Remove batched lines, points and meshes with given ID */
ENGINE_API void ClearBatch(uint32 InBatchID);`World 自体が LineBatchComponent を保持しており、例えば以下のような形で使用できます。
// 線を描画 GetWorld()->PersistentLineBatcher->DrawLine(Start, End, FLinearColor::Red, 0, 2.0f, -1.0f, BatchID); // その線を削除 GetWorld()->PersistentLineBatcher->ClearBatch(BatchID);
よろしくお願いいたします。
ありがとうございます!
意図通りに動作することが確認できました
ご確認ありがとうございます。
本件はクローズいたします。
また何かありましたらお問い合わせ下さい。