- 追加された行はこの色です。
- 削除された行はこの色です。
#contets
#contents
----
UEnvQueryGenerator_SimpleGrid
っぽい
UE 4.14.0ではEQSのテストはBlueprintで作成出来ない。
C++が必要になるのでその手順メモ。
* 参考 [#xd5b71b4]
エンジンのソースコードの下記辺りに既存のテストclassが有る
Engine\Source\Runtime\AIModule\Classes\EnvironmentQuery\Tests\
* 作り方 [#z058c67d]
+ C++クラスを作成する
&ref(eqs_create_test01.png,,70%);
+ 右上の「Show All Classes」にチェック、親クラスを「EnvQueryTest」を指定する。
&ref(eqs_create_test02.png,,70%);
+ そのまま作成を進めてC++ファイルを追加する。Visual Studioで開かれる。
+ ヘッダーは下記のように。
UCLASS()
class UMyEnvQueryTest : public UEnvQueryTest
{
GENERATED_UCLASS_BODY()
// テストを行う
virtual void RunTest(FEnvQueryInstance& QueryInstance) const override;
virtual FText GetDescriptionTitle() const override;
virtual FText GetDescriptionDetails() const override;
};
+ ソースコードもいい感じに
#include "EnvironmentQuery/Items/EnvQueryItemType_VectorBase.h"
UMyEnvQueryTest::UMyEnvQueryTest(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer)
{
// testのコスト?
Cost = EEnvTestCost::Low;
// アイテムは何のパラメーターを受け取れるか。多分。
ValidItemType = UEnvQueryItemType_VectorBase::StaticClass();
}
void UMyEnvQueryTest::RunTest(FEnvQueryInstance& QueryInstance) const
{
// オーナーが居ない
UObject* QueryOwner = QueryInstance.Owner.Get();
if (QueryOwner == nullptr)
{
return;
}
FloatValueMin.BindData(QueryOwner, QueryInstance.QueryID);
float MinThresholdValue = FloatValueMin.GetValue();
FloatValueMax.BindData(QueryOwner, QueryInstance.QueryID);
float MaxThresholdValue = FloatValueMax.GetValue();
// アイテムの数だけブン回す
float score = 0.0f; // いい感じにする
for (FEnvQueryInstance::ItemIterator It(this, QueryInstance); It; ++It)
{
score += 0.05f; // いい感じにする
It.SetScore(TestPurpose, FilterType, score, MinThresholdValue, MaxThresholdValue);
}
}
FText UMyEnvQueryTest::GetDescriptionTitle() const
{
return Super::GetDescriptionTitle();
}
FText UMyEnvQueryTest::GetDescriptionDetails() const
{
return DescribeFloatTestParams();
}