UE4 CSVファイルを使う(Data Table、Get Data Table Row 構造体、Break 構造体)
UE4でCSVファイルを扱う方法です。
詳しい説明は historia さんのサイトが参考になります!
・[UE4] CSVデータを扱う方法 DataTable編
http://historia.co.jp/archives/779
さて、UE4でCSVファイルを扱う方法は
「Data Table」と「Curve Table」の二種類があるようです。
まずは、CSVで扱う用の構造体を定義します。

こんな感じですね。
あとは、この構造体にあったCSVファイルを用意します。

こちらもこんな感じのファイルになります。
一番上の行はメンバ変数名を記述するようです。
2行目以降の各行の最初は行の名前をつけるようにします。
なので、1列目の1行目は空白、2行目以降は行データの名前になります。
あとはこのCSVファイルをインポートします。
コンテンツにCSVファイルをドロップすると以下のようなウィンドウがでます。

このCSVファイルをどの構造体に割り当てるかの選択がでるので
「データテーブルの列の種類を選択」のところを、先ほど作った構造体を指定しましょう。
そうすると無事インポートが完了し、
データテーブルをダブルクリックすると中身にデータがインポートされていることがわかります。

余談ですが、構造体の中に構造体がある場合のCSVの定義方法は
(メンバ変数名=値)
といった風に記述するようですね。
ベクトルであれば「"(X=1.0,Y=2.0,Z=3.0)"」こんな感じになります。
ベクトルメンバのCSVの書き方はここを参考にしました。
・Importing Vectors into Data Tables
https://answers.unrealengine.com/questions/177653/importing-vectors-into-data-tables.html
あとは、ブループリントでこのデータテーブルを扱います。
「Get Data Table Row」ノードの値に作成したデータテーブルを指定します。

Row Name には各行につけた行の名前を指定します。
そして、各メンバ変数にアクセスするには「Break 構造体名」ノードを使います。
これで色々そのメンバにアクセスすることができました。
ゲームを作るには外部で作成したテーブルを使うことが多いので、
静的なデータとしてはこの機能があれば十分そうですね。
詳しい説明は historia さんのサイトが参考になります!
・[UE4] CSVデータを扱う方法 DataTable編
http://historia.co.jp/archives/779
さて、UE4でCSVファイルを扱う方法は
「Data Table」と「Curve Table」の二種類があるようです。
とのことなので、今回は純粋なデータである「Data Table」を使おうと思います。DataTableはデータの構造をfloat, int, bool, stringなどの組み合わせで自由にカスタマイズすることができ、
CurveTableはfloat型のみの対応ですが、データ間を自動で補間してくれるため、難易度の調整などに役立ちます。
まずは、CSVで扱う用の構造体を定義します。

こんな感じですね。
あとは、この構造体にあったCSVファイルを用意します。

こちらもこんな感じのファイルになります。
一番上の行はメンバ変数名を記述するようです。
2行目以降の各行の最初は行の名前をつけるようにします。
なので、1列目の1行目は空白、2行目以降は行データの名前になります。
あとはこのCSVファイルをインポートします。
コンテンツにCSVファイルをドロップすると以下のようなウィンドウがでます。

このCSVファイルをどの構造体に割り当てるかの選択がでるので
「データテーブルの列の種類を選択」のところを、先ほど作った構造体を指定しましょう。
そうすると無事インポートが完了し、
データテーブルをダブルクリックすると中身にデータがインポートされていることがわかります。

余談ですが、構造体の中に構造体がある場合のCSVの定義方法は
(メンバ変数名=値)
といった風に記述するようですね。
ベクトルであれば「"(X=1.0,Y=2.0,Z=3.0)"」こんな感じになります。
ベクトルメンバのCSVの書き方はここを参考にしました。
・Importing Vectors into Data Tables
https://answers.unrealengine.com/questions/177653/importing-vectors-into-data-tables.html
あとは、ブループリントでこのデータテーブルを扱います。
「Get Data Table Row」ノードの値に作成したデータテーブルを指定します。

Row Name には各行につけた行の名前を指定します。
そして、各メンバ変数にアクセスするには「Break 構造体名」ノードを使います。
これで色々そのメンバにアクセスすることができました。
ゲームを作るには外部で作成したテーブルを使うことが多いので、
静的なデータとしてはこの機能があれば十分そうですね。
| UE4 | 20:24 | comments:0 | trackbacks:0 | TOP↑