UE4 DataTableで特定の数値を持ってくる
今回はDataTableを使用して、外部からの数値を持ってきたいと思います。
こちらのブログを参考にしました。
[UE4] CSVデータを扱う方法 DataTable編 | historia Inc - 株式会社ヒストリア
UE4のバージョンは4.14.0です。
準備
※今回はOpenOfficeCalcを使用しています。
Excelの場合は少し操作が違うかもしれません。
まずは前準備としてExcelやOpenOfficeCalcなどで
UE4上でパラメータにしたいものを設定しましょう。
パラメータになるものを横に書いていき、
そのパラメータを持つものを縦に書きましょう。
今回はこんな感じでCard03がすごく強いパラメータを作りました。
このファイルを別名保存します。
名前は適当にCardDataにします。
ファイルの種類は.csvにしましょう。
保存ボタンを押すとエクスポートオプションが出てきます。
文字列を「絶対に」Unicode(UTF-8)に変更してください。
UTF-8でないと.csvに日本語が含まれていた場合文字化けします。
その他は特に変更の必要はありません。
OKボタンを押して保存を完了しましょう。
構造体を作成する
早速.csvをUE4にインポートしたいところですが、
まずは構造体を作成しましょう。
コンテンツブラウザで右クリック→Blueprints→Structure
適当に名前を付けましょう。
先ほどCardのパラメータを作成したので
私はStruct_Cardにします。
この構造体を開き、先ほど作成した.csvのパラメータを
戻り値も含めて作成します。
構造体を作成したら保存して閉じてください。
UE4に.csvをインポートする
次に.csvのインポートをします。
インポートボタンをクリックしてファイルを指定するか、
csvファイルをコンテンツブラウザにドラッグ&ドロップでインポートしましょう。
ファイルをインポートすると、このような画面が出現すると思います。
Choose DataTable Row Type:に先ほどを作成した構造体を入れてください。
このような感じですね。
ではOKボタンを押してください。
DataTableを編集する
.csvはUE4にインポートされるとDataTableとして扱われます。
DataTableを開きましょう。
恐らくこのような画面になると思います。
もし、文字化けしていたり数値が変だった場合には
文字コードを見直したり、構造体を再確認してください。
DataTableでは新しく要素を追加することができます。
画像の右上の+ボタンをクリックすると、
DataTableに要素が1つ足されます。
もちろんパラメータの数値を変更することも可能です。
同様に構造体の方にも変数を追加してみましょう。
戻り値にはBoolやVectorのほかに
BlueprintやSoundCue、列挙体などを入れることもできます。
するとDataTableの方でパラメータが一つ増えています。
ファンクションライブラリを作成する
せっかくなので汎用的に使えるようにしたいと思います。
コンテンツブラウザを右クリック→Blueprints→Blueprints Function Libraryを
選択してください。
名前を付けましょう。
ファンクションライブラリは関数専用のブループリントです。
この関数は一部の例外を除いてグローバルに呼び出せるため非常に
使い勝手がいいです。
処理を組んでいきます。
関数の全体図
Get Data Table Row Names及びGet Data Table Rowには
先ほど作成した構造体を入れましょう。
関数のInputノードとOutputノードはこんな感じ。
Inputノードには呼びたいデータのIndex番号を追加し、
Outputノードにはパラメータを出力するためのピンを追加します。
(少し細かくスクショ撮りました)
関数が呼び出されたときに、DataTable内のRow要素をForEachLoopで見ます。
呼び出し前に指定した配列番号と一致したものがあれば次に。
呼び出し前に指定した配列番号と一致したものがあれば、
そのDataTableのデータをReturnノードから出力します。
ForEachLoopで指定した配列番号と一致するものがなかった場合、
要素をすべて0でRertunします。
欲しいデータを呼び出してみる
レベルブループリントを開き、このように処理を組みます。
作成した関数を呼び出します。
今回はめんどくさくなったので特殊効果のStringのみを呼び出します。
Table Row IndexにはCard03を呼び出すように配列番号2を入れておきます。
( 配列は0からなので1つズレます )
実行し、Pキーを押すと
出ました。
これは非常に使い勝手がいいので是非使ってみてください(今更)
.csvを作らずにDataTableを作成する
上記では.csvをインポートし、それをDataTableとして扱いましたが、
次はUE4上でDataTableを作成したいと思います。
まずは構造体を作ります。
DataTableを作成します。
コンテンツブラウザを右クリック→Miscellaneous(その他)→Data Tableを選択します。
DataTableを作成すると構造体を選択する画面が出現しますので、
先ほど作成したStruct2を選択し、OKボタンを押します。
DataTableにも名前を付け、
このようにします。
構造体を開き、パラメータ作成します。
次にDataTableを開き
パラメータを付けるものを作成していきます。
+ボタンから要素を追加し、
パラメータの数値を変更します。
後は先ほどのFunctionLibraryと同じ要領で使用できます。
このようにcsvが無くてもData Tableを作成することができます。