画面遷移直後にメッセージダイアログを表示させたい

▼望んでいる挙動

フラグが立っていない状態で、ウィジェットから別のウィジェットへ画面遷移すると、
画面遷移直後にメッセージダイアログを表示させ、ダイアログを閉じる際にフラグを立てたい
→チュートリアルのための内容です。

  1. タイトル画面からゲーム開始し、シナリオ選択画面へ遷移
  2. シナリオ選択画面に入ったことがあるかどうかのフラグチェック
  3. フラグがOFFならメッセージダイアログを表示し、フラグをONにする

といった感じです。

▼既に行った作業

このウェブサイトを参考に、

  • 表示させるテキスト用データテーブルの作成
  • ダイアログ用ウィジェットの作成
  • PlayerController内でのウィジェット作成処理

を行いました。

▼不明な箇所

  1. 「プレイヤーに話しかける」ではなく「画面遷移直後」にメッセージダイアログを
    表示させたい場合の処理は、どのファイルにどんな処理を作成するのでしょうか?

  2. そもそも今まで行っていた作業は、想定している挙動を実行させるために
    必要な作業として正解なのでしょうか?

メッセージダイアログの表示処理を調べたのですが、やはり
「NPCに話しかけたとき」の情報は出てくるのですが
「画面遷移直後」の処理が見つけられず、こちらで質問させていただいております…
参考になるWebページなど、ご教示いただけますと幸いです。
お手数おかけしますが、よろしくお願いいたします。

1 Like

現在の状態は

  • シナリオ選択とメッセージダイアログの2つのウィジェットブループリントがある
  • 1.の「画面遷移直後」はシナリオ選択用のウィジェットを「Add to Viewport」ノードで画面に表示した直後のこと

で良いでしょうか。メッセージダイアログの表示ですが

シナリオ選択画面を「Add to Viewport」した後に、メッセージダイアログを「ウィジェットを作成」で作成して「Add to Viewport」で画面に表示する

では上手く行かないでしょうか?

テストに作ったプロジェクトのレベルブループリントですが、メッセージダイアログがシナリオ選択の上に表示されました。

私が現在の状態を読み違えてたりしたら、また返信お願いします。

前回に引き続き、今回もありがとうございます!

現在の状況は仰っていただいた

の通りです。
教えていただいた方法で、ダイアログを表示させることができました。
一歩前進できて嬉しいです…ありがとうございます!

後はメッセージを表示させる方法が不明な状況です。
記載したWebページの「キャラクターに話しかける」部分を、
「ウィジェット遷移直後にブランチでBoolをチェックし、もしOFFだったら」に
読み替えれば作業できるのでは?と考えていたのですが
「ダイアログ表示条件が違えば、そもそも編集するデータが違うのでは?」
といった疑問や、元々の力不足で理解が難しい箇所があり困っています…

恐らく

  1. ダイアログ用のウィジェットにテキストパレットを追加
  2. メッセージ用データテーブルを作成
  3. テキストパレットに、メッセージ表示用の処理をバインド
  4. ダイアログ用のウィジェット呼び出し時に、メッセージ表示用の処理にデータテーブル内の表示させたいメッセージのIDを指定

といった流れになるのかな?と予想はしています。

考え方自体が正しいかどうかだけでもご教示いただけると助かるのですが…
もしよければ、またお返事いただけると幸いです。

申し訳ありません、リプライとしての設定をせずコメント投稿してしましました。
以下にて返信させていただきました。

重ね重ね、ありがとうございます。

文字だけ見ると以下の考えは正しそうな気がします。

  1. ダイアログ用のウィジェットにテキストパレットを追加
  2. メッセージ用データテーブルを作成
  3. テキストパレットに、メッセージ表示用の処理をバインド
  4. ダイアログ用のウィジェット呼び出し時に、メッセージ表示用の処理にデータテーブル内の表示させたいメッセージのIDを指定

が、プログラムは作ってみないと分からないこともあるので絶対上手く行くかどうかまではわかりませんが……

ウィジェットのテキストはバインドするだけではなく、以下のようにテキストを設定する関数を作り
image

PlayerControllerなど、ウィジェットの変数を持つブループリントから呼び出すこともできます。
image

バインドで上手く行くかもしれないですが、詰まったときは試してみてください

せっかくお返事いただいておりましたのに、長い間リアクションできず、大変申し訳ありません。
私事により開発も進められておりませんでした。
失礼を働いた身で大変恐縮ですが、またご助力いただけますと幸いです。

テキスト表示について、ご丁寧に例示までいただき誠にありがとうございます!
表示方法ですが、テキストをデータテーブルにまとめておきたかったため、参考文献の一部を抜き取って処理を組んでみました。
するとデータテーブルに入力した1番目のメッセージを表示させることはできたのですが、
それ以降のメッセージへと送るためにはどうすればいいか」で躓いてしまいました。

そもそも
・参考文献では「キーボードのIを押してNPCに話しかける」ことが処理のスタートである
・私が作成したものは、「画面遷移直後に条件判定」が処理のスタートである
と、「基準となる操作の有無」という差異があるため、「メッセージを送る操作」自体が設定できないない状態です。

理想としては、キーボードのあるボタンを押すか、画面上に配置したボタンをクリックすることで、メッセージが送れるようにできればと考えております。
この点について、ご教示いただける内容がございましたら大変ありがたいのですが……

現在の状況の画像を添付しております。
(ウィジェットを表示するかの条件分岐についてはカットしてあります)
何卒よろしくお願いいたします。

先ほどの画像はファイル形式を誤り、大変見づらくなってしまいましたので
改めてアップロードいたします。
大変失礼いたしました。

参考程度に見て欲しいのですが

こんな感じのデータテーブルがあって a, b, c と進むとします
image
ブループリント中では数字で0,1,2と数えてどこまで進んだかするので、0だったらa、1だったらb、2だったらcの配列を作ります
image

で、会話が始まってるかどうかを調べる変数を作ります
image

画面遷移したらさっきの「会話スタート」をtrueにします。ここでは Nキーで会話を進めますが、会話スタートがfalseのときは進めないようになってます

「会話を進める」関数は

データテーブルからデータを取得した後に表示します。自分か相手かで処理を分けています


その後進度を進めて、セリフは2で終わりなので3になったら会話終了なので
会話スタートをfalseにします

会話取得関数は、進度の数値をa,b,cに変換してデータテーブルから会話データを取得します。

この辺りはいろいろなやり方があります。私が書いた内容は参考程度にして
現在のプロジェクトの状態に合わせて作ってみてください。

会話シーンのプラグインが何種類かあるので買っても良いかもしれないです。

あまりに複雑になるようなら、メニューのレベルと会話のレベルを
分けてしまうという方法も考えられます

こんなに詳しく、誠にありがとうございます。
方向性はなんとなくつかめ、調べて試行するのに少々時間がかかりそうなので
いったん本スレッドは解決済みとさせていただきます。

重ね重ね、ありがとうございました!