みつまめ杏仁

アンリアルエンジン(UE4)でGUIを作るためにゴニョゴニョしてます。UIデザイナーの皆様の助けになれば幸いです。

ストラクチャを使ってみる

前にEnum(いーなむ)を使ったリストメニューについて書きましたが、最近になってUser Defind Structureが便利なことに気付きました。

ストラクチャはプログラム界では《構造体》とか呼ばれているようで、Enumと同じように、アセットで管理できます。Enumと違って中にいくつでも変数を仕込むことができるので、使い方によっては、とても頼もしい存在になってくれそうです。

 

作り方は簡単。コンテンツブラウザからいつも通り右クリックして作れます。

f:id:hiyokosabrey:20161214012219p:plain

 

で生まれたのが下のアイコン。

f:id:hiyokosabrey:20161214012242p:plain

コンテンツアイコンには、New User Defined Structure とあります。

「新しくユーザーが定義した構造体」ということになるのでしょうか。

いい感じの名前を付けたら、編集ウィンドウを開いて、変数を追加していきます。

f:id:hiyokosabrey:20161215000309p:plain

上の例ではText型の配列変数を一つ追加しました。

Saveして閉じたら、このストラクチャを使おうとしているブループリントを開きます。

そこで変数を追加します。

変数を追加したら、型(VaribleType)を変更するのですが、リストの中に自分の作ったストラクチャが追加されているはずなので、それに変更します。

f:id:hiyokosabrey:20161216003656p:plain

下図はストラクチャの名前と変数名を "ListName" にした場合です。

f:id:hiyokosabrey:20161216003945p:plain

 

値を取り出す場合は、Breakノードを使います。

f:id:hiyokosabrey:20161215030933p:plain

ストラクチャだと配列が扱えるので、値を取り出すのも簡単。ForEachLoopとの連携も便利です。

 

他にもいろんな型の変数が扱えるので、マテリアルパラメータコレクションみたいな使い方も便利そうです。アセットなので、カラーを初期値として設定しておけば、いろんなブループリントで共有することができるので、カラールールを揃えるのも簡単。一斉に修正や調整ができて便利そうです。

f:id:hiyokosabrey:20161216005354p:plain

 

変数として扱えるということは、当然、値をセットすることもできます。

その場合、Makeノードを使います。

f:id:hiyokosabrey:20161223234728p:plain

アセットの中身が書き換わるわけではないので、普段の変数と同じように扱えばOK。ただ、SetとGet のカタチで直接触れないので、BreakとMakeノードの助けを借ります。

 

なんとなく便利そうなストラクチャですが、ちょっとだけ気を付けることがあります。

ストラクチャのアセットを編集すると、そのストラクチャを使用しているブループリントすべてが自動的にコンパイルされ、未保存の状態になってしまいます。新たに別のレベルを開くか、エンジンを終了しようとすると、ダイアログが出てきて保存するかどうか訊いてくるので、うっかりDon't Save を選ばないように。

 

そんなに使いどころは無いかもしれないストラクチャですが、また機会があったら試していこうと思います。

 

ここ最近時間なくて、これだけの文章書くのに1週間以上かかってしまった・・・

では

今回はこのへんで。