UE4.14.0
- リアルタイムに更新されない。パラメーターが変更された時とかだけテスト結果と表示が更新される。
- Outlinerでアクティブ化しないと表示されない
多分。
プレイヤーから遠いところのコスト表示。本来ならプレイヤーの周囲は0.0(赤)になる筈。歩き回っても更新されない。
ゲーム中もリアルタイムに更新されるように †
- こちらと同じようにC++のclassを作成
- 親クラスに「EQS Testing Pawn」を指定する。
- そのまま作成を進めてC++ファイルを追加する。Visual Studioで開かれる。
- ヘッダーは下記のように。
UCLASS()
class TESTSEQUENCER_API AMyEQSTestingPawn : public AEQSTestingPawn
{
GENERATED_UCLASS_BODY()
public:
// BPに公開
UFUNCTION(BlueprintCallable, Category = "Damage")
void EQSQuery();
public:
};
- ソースコードは下記のように
#include "EnvironmentQuery/EQSRenderingComponent.h"
AMyEQSTestingPawn::AMyEQSTestingPawn(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
GetEdRenderComp()->bDrawOnlyWhenSelected = false;
}
void AMyEQSTestingPawn::EQSQuery()
{
RunEQSQuery();
}
- エディターに戻ってCompile.
- コンパイルに成功したら、今回作成したクラスを継承したBlueprintを作成する
- EventGraphを開いて、C++で追加したメソッドをTicksでコールする
- Ticksの頻度が高いと更新負荷が高いので注意。
- 後はワールドに配置すると随時更新される
メモ †
AEQSTestingPawn::RunEQSQuery
が何かエディットされた時、まだクエリを走らせていない時しか呼ばれないようになってる。
なのでそれを強制的に呼ばせるようにメソッド追加した。
Outlinerでアクティブ化しなくても常時表示されるようにする †
- リアルタイム更新と同じ方法でc++のクラスを作るまで。
- ソースコードのコンストラクタに下記みたいな感じにする
AMyEQSTestingPawn::AMyEQSTestingPawn(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
GetEdRenderComp()->bDrawOnlyWhenSelected = false;
}
- エディターに戻ってCompile.
- これでOutlinerで選択しなくても常時表示されるようになる
おまけ †
上記2つをやると、ChildActorComponentにくっつけると一緒に動きながら表示できるようになる。