妹でもわかるUnrealEngine4

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

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

NPCとの会話のシステム(3) 複数のセリフを1つの文字列から切り出す方法

f:id:una_unagi:20170930225700p:plain

「前回のは1行ごとに分けたけど、あれだと複数行のセリフに対応できないので、もう少し工夫を加える」

f:id:una_unagi:20170930225720p:plain
f:id:una_unagi:20170930225728p:plain

「前回は改行で区切ったけど、今回は何も文字がない改行だけの行で、ひと区切りになるようにした。言い換えると改行が2回連続した場合だけど。これでセリフの行数に関係なく分割できる」

妹「分割しなくても、アクターに作った変数を、文字列じゃなくて文字列の配列にしておくという方法もあるのでは?」

「もちろん配列でもいい。ただセリフとの順番入れ替えとか考えるとこの方が都合がいいのと、テキストファイルを読みこみ形への改修がやりやすいというがある」

ああああああああああ
ああああ/
いいいいいいいいいいいいいい/
ううううううううう
うううう
ううううう

「区切り方は自由だから、例えばこういうのでもいい。これだったら『/』と『改行』の2文字で区切れる」

あああ/あああああああああああ/ああああああああ
いいいいいい/いい
うううううう/うううううううう

「こういうパターンもあって、これはまず改行ごとにセリフとしてわけて、『/』を改行に置換する。これでも同じ用にセリフ単位の表示が出来る。セリフの中に『/』を使いそうな場合はもちろん別の文字にする」

f:id:una_unagi:20170930231412p:plain
f:id:una_unagi:20170930231421p:plain

「こんな感じ」

妹「どっちの方がいいの?」

「1行に書くやつの方がちょっと扱いが面倒くさいと思う。改行に変換する分、ノード1つ分は手間かかるし。ただ実用的にはセリフ以外の文字列を混ぜて、立ち絵の指定とかもすることが多いから、その時の都合とか、自分の書きやすさで変わると思う」