読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

4.14でのTMap型サポートはまだ限定的?

UE4.14 ブループリント ノード解説

f:id:una_unagi:20161024234941p:plain

「4.14の機能紹介にこんなことが書いてあったんで、詳細パネルをつつき回してみたんだけど、どうもC++から作ったTMap型に、詳細パネルからデータを追加したり出来るだけで、肝心のTMap型自体を作るのはブループリントとエディタだけでは無理っぽい気配だった」

妹「TMap型って何? マップ画面と関係ある?」

「そういうMapとは無関係な、配列の親戚みたいな感じのやつなんだけど。わかりやすく言うと、添え字(index)に数字じゃなくて文字を使う配列。実際は文字以外も使えるけど、それが一番わかりやすい」

docs.unrealengine.com

「他のプログラミング言語だと、連想配列とか、ハッシュ配列とかって呼ばれてる場合もある」

妹「数字じゃなくて文字になると、なんかいい事あるの?」

「変数に名前を付けて、ひとかたまりにして整理するっていう、今だと構造体を使うか、アクター上に変数を作って公開すれば対応は出来る。……でもゲームの途中で構造体に新しいピンを付け足すって無理でしょ? 配列に途中で何個でも追加できるのと同じように、TMap型にも途中で追加が出来る。そこが大きな違い」

妹「数字より文字の方がわかりやすいってことかな」

「配列の場合、単に数字っていうだけじゃなく、順番通りに並んだ数字しか作れない。飛び飛びの番号にしようと思っても、途中の番号を全部作らないと駄目。そういう制限もない」

妹「配列の進化型?」

「まあそうなんだけど、その分ちょっと遅いとか、順番通り並んでくれないという欠点はある。それにいつでも追加出来るし、削除も出来るから、そのピンがあるかどうか編集画面ではわからない。だからピンのところにString型をつないおいて、それが見つかるかどうかはその時になってみたいとわからない」

妹「配列と同じ……なのかなあ?」

「実用上は、"HP"って文字列を繋いだGETノードで体力調べるとか、Foreachで中身を全部チェックしたりする。これは妹がやろうとしてたアクターに依存しない仕組みにも使える。事前にピンをキッチリ準備しなくてもいいから、変数があるかないかわからないけど、あった場合はこうするみたいな、最初に細かく設計せずに動かすやり方に適してる」

妹「うーん、でもまだ使えないんだよね?」

C++使わないと無理だね……。でも実験自体は進んでるみたいだから、いずれ使えるようにはなるはず。今の機能でやるとしたら、配列の何番はHPだとか、自分の中で決めてやるぐらいしかないね」