妹でもわかるUnrealEngine4

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

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

NPCとの会話のシステム(2) 長い文字列を配列に変換する方法

f:id:una_unagi:20170928220836p:plain

「昨日のやつに少し手を加えて、変数に設定した文字列の最初の行だけ表示するようにした」

妹「1行だけ入れればいいのでは」

「そうなんだけど、この特定の行だけ取り出す方法っていうのが、文字列を使って何かする時の基本になる」

f:id:una_unagi:20170928221027p:plain

「これがウィジェットを表示する用のイベントで、昨日は変数に入ってる文字をそのまま表示してたところに、赤枠の部分を今日追加した部分」

妹「文字列を……文字列の配列にするの?」

「配列にするというか、文字列を分割するというか。Parse Into Arrayというノードを使う。例えばこれとこれは同じ結果が出力ピンから出てくる」

f:id:una_unagi:20170928221611p:plain

「結果が同じだけで、内部的な処理は違うだろうけど。こうするとピンをいっぱい作ったり、変数をたくさん用意したりしなくていい。全部1まとめに書いておいて、あとで分けて使うことが出来る」

妹「区切る文字を変えられるなら、改行以外にも使えそうだけど……」

「もちろん使える。まあ本文の中で使う文字だと、意図しないとこで分割されちゃうから、区切りに使う文字は、それ以外のところには使わないようにしないと駄目だけど。『,』とか『:』とかを使うことが多い。区切りは日本語でも複数の文字でもいい

妹「これは凄い技術のような、そうでもないような……」

「Parse Into Array以外にも文字列を操作する関数というのが大量にあって、ユーティリティー -> ストリング の中にある」

f:id:una_unagi:20170928222446p:plain

「配列じゃなく2つのピンに分ける時はSplitだし、あと文字列をくっつけるAppendは今までに使ったことあった気がする。他にも指定の文字を他のに置き換えるとか、先頭から何文字目分だけ抜き出すとか、特定の文字が含まれているか調べるとか、そういうのが色々ある。正規表現も使えるし、一般的なプログラミングで使う文字列処理はだいたい使える」

妹「たくさんありすぎてわからん……」

「ゲーム作るのによく使う分はそんなにはないから。どういうことが出来るかだけ記憶しておいて、あとは使う時に探せばいい。いちばんよく使うのはやっぱりParse Into Arrayだと思う」