Top > EQS-EQSTestingPawnの改造

UE4.14.0

  • リアルタイムに更新されない。パラメーターが変更された時とかだけテスト結果と表示が更新される。
  • Outlinerでアクティブ化しないと表示されない
    多分。

プレイヤーから遠いところのコスト表示。本来ならプレイヤーの周囲は0.0(赤)になる筈。歩き回っても更新されない。
eqs_testing_pawn01.png

ゲーム中もリアルタイムに更新されるように

  1. こちらと同じようにC++のclassを作成
  2. 親クラスに「EQS Testing Pawn」を指定する。
  3. そのまま作成を進めてC++ファイルを追加する。Visual Studioで開かれる。
  4. ヘッダーは下記のように。
    UCLASS()
    class TESTSEQUENCER_API AMyEQSTestingPawn : public AEQSTestingPawn
    {
    	GENERATED_UCLASS_BODY()
    
    public:
    	// BPに公開
    	UFUNCTION(BlueprintCallable, Category = "EQS")
    	void EQSQuery();
    
    public:
    };
  5. ソースコードは下記のように
    #include "EnvironmentQuery/EQSRenderingComponent.h"
    
    AMyEQSTestingPawn::AMyEQSTestingPawn(const FObjectInitializer& ObjectInitializer)
    	: Super(ObjectInitializer)
    {
    }
    void AMyEQSTestingPawn::EQSQuery()
    {
    	RunEQSQuery();
    }
  6. エディターに戻ってCompile.
  7. コンパイルに成功したら、今回作成したクラスを継承したBlueprintを作成する
    eqs_testing_pawn02.png
  8. EventGraphを開いて、C++で追加したメソッドをTicksでコールする
    • Ticksの頻度が高いと更新負荷が高いので注意。
      eqs_testing_pawn03.png
  9. 後はワールドに配置すると随時更新される
    eqs_testing_pawn04.gif

メモ

AEQSTestingPawn::RunEQSQuery
が何かエディットされた時、まだクエリを走らせていない時しか呼ばれないようになってる。
なのでそれを強制的に呼ばせるようにメソッド追加した。

Outlinerでアクティブ化しなくても常時表示されるようにする

  1. リアルタイム更新と同じ方法でc++のクラスを作るまで。
  2. ソースコードのコンストラクタに下記みたいな感じにする
    AMyEQSTestingPawn::AMyEQSTestingPawn(const FObjectInitializer& ObjectInitializer)
    	: Super(ObjectInitializer)
    {
    	GetEdRenderComp()->bDrawOnlyWhenSelected = false;
    }
  3. エディターに戻ってCompile.
  4. これでOutlinerで選択しなくても常時表示されるようになる

おまけ

上記2つをやって、ChildActorComponentにくっつけると一緒に動きながら表示できるようになる。
eqs_testing_pawn05.png


添付ファイル: fileeqs_testing_pawn05.png 175件 [詳細] fileeqs_testing_pawn03.png 167件 [詳細] fileeqs_testing_pawn04.gif 163件 [詳細] fileeqs_testing_pawn02.png 176件 [詳細] fileeqs_testing_pawn01.png 198件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2016-11-25 (金) 15:17:44 (1324d)