いつもお世話になっております。
UMGで字幕のようにしてテキストをたくさん表示したい場合、効率的な方法はあるのでしょうか?
現在はフラグを各テキストにバインドして、表示を切り替えたいタイミングでONとOFFを切り替えているのですが
当然数が多くなってくると命令も増えて管理しにくくなってきます。
なので、テキストベースのゲームなどの制作を行う場合今のままではかなり不都合があるかと思います。
UE4の機能で効率的にテキストの追加や表示の切り替えが行える機能などはあるのでしょうか?
また、ない場合はどのような実装が考えられるかどなたかご存知でしたらご教授ください。
よろしくお願い致します。
alwei
(alwei)
2
UMGにはプロパティのバインディング機能があります。
テキストに対してプロパティのバインドを行なえば外部から読み込んだテキストを取り込み、順番の応じて表示を切替えるといった事も可能となります。
資料は少ないですが、Excelなどで扱えるCSVファイルにテキストとIDをもたせて管理させて、ブループリントで読み込んでIDの順番に表示させるといった構造も可能です。
ただしこの辺に関してはかなりシステマチックな構造になりますので、多少構築の難易度は上がります。
回答ありがとうございます。
UMGのプロパティのバインディングは既に上記の画像で行っていました。
マチネのイベントに応じてフラグのONOFFを切り替えていました。
CSVを使った方法やHUDのDrawtext等も確認してみましたが効率化を図る方法は無いようですね。
この辺りはUE4でもある程度力技になるということですね。
何か他に良い方法があれば良いのですが。
alwei
(alwei)
4
ゲームのシステムによると思いますが、単純にテキストを順番に表示するだけであればそこまで難しくないはずです。
むしろCSVまで扱えて表示できているのなら十分効率化できているのではないかと。この辺は他のゲームエンジンや一般的なプログラミングでもそこまで大きくは変わりません。
単純にマチネのイベントで管理するというのが非効率な気がしていますが、ゲームシステム上そうしなくてはならないのでしょうか?特にそこに依存しないのであれば、表示IDだけを受け取り、それをテーブルから引っ張り、プロパティバイディングしたテキストとして表示するだけなような気もします。
回答ありがとうございます。以下の方法で実装してみます。
UMG→Text領域→データテーブル設定→出したいときに切り替え
ただ、マチネのイベントについては一つだけ問題があります。
映像に文字を出して切り替えるといった形のゲームを作ってたので
マチネのイベント管理以外だと時間で文字を切り替えてる方法もあるかと思いますが
その場合映像部分の変更が入ったら値の調整で時間を取られてしまいます。
時間以外で何か良い方法は無いものでしょうか?
alwei
(alwei)
6
なるほど。マチネ以外のやり方だと映像ごとにCSVファイルに時間とセリフを書き込んだものを設定し、再生管理をするブループリント上で、CSVテーブルから時間がきた時にIDに入ったセリフを表示させるといった方法が考えられます。
これであれば映像部分の変更に対してExcel上で変更を修正し、CSV出力すれば特にブループリント側の修正は必要ありませんがどうでしょう?
ふむふむ、セリフ部分を完全に外出しにしてしまうということですね。
分業した際などにもこちらのほうが良さそうですね!
参考になりました、ありがとうございます。
ということは、CSVに表示する時間等も入力しておいて表示タイミングも動的に指定できるようにBP側で作っておけば今後効率化が図れそうですね。