BLOGブログ

2018.04.05UE4/C++

[UE4]ConsoleVariableの一括取得

 ・ConsoleVariableとは何か?

http://api.unrealengine.com/JPN/Programming/Development/Tools/ConsoleManager/

ドキュメントでは名前指定で一致するConsoleVariableを取得する方法が書いてありますが今回は

このConsoleVariableを条件に一致するものをすべて取得してみたいと思います。

 

では早速サンプルとなるソースコードをのせます。EngineVersionは4・19で確認しています。

 

ConsoleVariableはFConsoleManagerで所持されておりこのクラスのForEachConsoleObjectThatStartsWithとForEachConsoleObjectThatContainsという2種類の関数を使用することで

複数のConsoleVariableを一度に取得できます。

引数にFConsoleObjectVisitor(※1)という型が必要ですが、これは引数が2つ使用するデリゲートで

・第一引数がコンソールオブジェクトの名前文字列

・第二引数が実際値を所持してるコンソールオブジェクト

が必要になります。引数に渡された文字列が一致してたら渡されたFConsoleObjectVisitorを使用して条件判定をしクリアしたものだけを取得するという流れになります。

ForEachConsoleObjectThatStartsWithとForEachConsoleObjectThatContainsの使い分けはそれぞれ以下のようになります。

 

 

ForEachConsoleObjectThatStartsWith

引数に渡された文字列を先頭から比較し一致したものを取得します。空の文字列を指定するとFConsoleManagerが所持するすべてのConsoleVariableを取得できます。

 

ForEachConsoleObjectThatContains

引数に渡された文字列が含まれてれば取得可能、また文字列の間に半角スペースをいれることで複数の文字列で判定をすることができます。

 

どちらも自分が作成した変数も検索可能です。ただし大文字小文字判定はありません。

次の画像では実際新しく定義した4種類の変数を条件を変えて取得してみてます。ほげー

 

 

ForEachConsoleObjectThatStartsWithを使用した場合、引数の「MyConsole」が含まれるものをすべて取得してます。

 

 

ForEachConsoleObjectThatContainsを使用した場合、引数の「MyConsole」と「Hoge」が含まれるものをすべて取得してます。

いざというときに覚えていると役にたつ(かも?)と思います!

 

 

 

※1:Visitorについて

https://en.wikipedia.org/wiki/Visitor_pattern