【UE4】会話ウィンドウを作ろう

できること

 会話ウィンドウを作ることができる。

f:id:NazzTea:20171027074334p:plain

 

用意するもの

  • 構造体
  • データテーブル

構造体を次のように作成

  • Command・・・・・・このテキストが呼ばれるイベントのタイトル
  • CharacterName・・・・・・会話ウィンドウで表示されるキャラクターの名前
  • Text・・・・・・会話ウィンドウで表示される会話内容
  • Enter・・・・・・Trueになるまでが同じページ。 入力待ちをする。
  • Call_Event_NO・・・・・・会話終了後に呼び出すイベントの番号
 
・・・あれ?なんでCall_Event_NO だけスネークケース(文字の区切りがアンダーバー)になってるんだろう。
Enterが言葉で説明しようとすると難しい。

f:id:NazzTea:20171027074724p:plain

 

データテーブル

構造体だとチンプンカンプンだと思われます。なので例
scene_01を呼び出すと次のような感じ
 
 -------- -------- -------- -------- -------- --------
女の子
 ママ~うさぎさんが    (EnterがFalseなので次の行も同じ1ページにいれよう)
 月にお団子を持ってっちゃった~ (EnterがTrueなのでプレイヤーの入力待ちをしよう)
 <<プレイヤーの入力>>
 (お、プレイヤーの入力が来たぞ!)
 (scene01はこれで終わりなので、Call_Event_NOが1のイベントを呼び出そう)
 -------- -------- -------- -------- -------- --------

f:id:NazzTea:20171027074926p:plain

 

文字を表示してる部分

(階層)
 会話ウィンドウ(今回必要なイベント会話をページの形に成型して、まとめて”会話スクリーン”に渡す)
   L 会話スクリーン(文字を1ページずつ表示する)
 
 緑色の文字はキャラクター名
 白色の文字が本文

f:id:NazzTea:20171027075001p:plain

 

下記は会話スクリーンのBP
簡単に言うと、こいつに本の1章をちぎって渡して合図を送ると1ページずつめくってくれる。
合図が来たけど、めくるページがないとないよと言ってくれる。
 
ページを1つ進めたとき、左の3つのイベントから呼び出されます。
キャラクター名と本文を画面に表示して、次のページがなかった場合フラグを立てる処理を行ってます。
そしてフラグが立った状態でイベントを呼び出すと"会話ウィンドウ"に終わったとおくる。

f:id:NazzTea:20171027075045p:plain

 
Call_Eventの先はこういう感じで呼び出しイベントを作ってます。
その先は同じ感じでレベルBPへ繋がってます。

f:id:NazzTea:20171027080055p:plain

 

終わり

色々なプロジェクト、色々な場所に流用する予定で作ってたのに、1つのレベルBPにベッタベタにこびりついてしまった・・・
イベントを動的に呼び出したいなぁ
データテーブルも自由に変更できる方法をまだしらないので、ここらへんも自由に変更できるようにしてみたい。
 あとは、色々なフォント使ってみたいな。