多段階UMGの処理方法

やりたい事

Widget_1:FPSにてトリガーに入ったら、無視できる程度のUMGを表示する。(アイコンボタン程度)

無視する場合はトリガーを素通りし、無視しない場合はボタンを押してWidget_2を表示する。このUMGからセレクタブルないくつかの処理をさせる。

以上です。

おそらく簡単な事なんでしょうが、プログラムには疎くうまくいかないのでご指導ください。

現状、Widget_1とWidget_2のどちらかしか表示されません。Widget_1が表示されて、ボタンを押してWidget_2に移行しますが、Widget_2のボタンが機能しません。もしくはWidget_1が飛ばされしまう。

コメント枠の処理が目的です。

すみませんもう一つ、今回に限らずUMG内のボタンを2度押さないと機能しないことが良くあります。これはなぜでしょうか?

わざわざサンプルまで作っていただきありがとうございます。
とても解かりやすくて理解できそうです。

QuitGameとPrintTextを割り当て、動作確認できました。使いたい実際のプロジェクトに当てはめて確認させて頂きます。追って結果報告いたします。

取り急ぎお礼まで。

以下のGIFのような感じでしょうか?

94427-1.gif

94428-2.gif

ちょっと説明が大変なので、サンプルプロジェクトを貼っておきます。コメントは入れてますがわからないところがあったらお願いします

Blueprintsフォルダの中のFirstPersonCharacter、Default_UMG、MenuUMG、CreateUMGに処理が入ってます。追加部分は青色背景になってます

https://drive.google.com/open?id=0B6_KaFI7mDQMdUF4bmZnMzhFVzg

いくつか疑問点がでてきました。初心者ゆえに「どうして?」の疑問や発想になりますのでご容赦ください。

1:スタート同時にDefault_UMGが動いていて、トリガー主体でUMGを選びたい場合はどうする?(違うUMGを出すことも考える)

2:CreateUMGにFirstPersonCharacterがキャストされていたり、MenuUMGが呼び出しされているが「1」の疑問は複雑になりそう?

3:レベルブループリント上に呼び出してコメント枠なりの処理をしたい場合どうする?イベントディスパッチャーを配置した場合、始まりからそこまでのノードは一体どうすれば?

レベルブループリント上で何かさせる考え方は、私自身の持てる知識が少ないからです。また、アウトライナ-からドラッグアンドドロップでターゲットを得るようなことをしたいためです。

うーん、結構単純なことと想像してたのですが難しいですね。Widget_1とWidget_2の間で待ちが入れば良いだけと考えていました。

私の方が単純なことを難しく捉えて変に難しいものを提示している可能性はあります

ちょっと仕様の想定が共有出来てないと話が逸れていきそうなので、当たり障りない範囲でいいので、画像とかで説明してもらったほうが良いかもしれません…

イベントディスパッチャーに関しては同時に複数のイベントを行いたいと言う場合に扱うものなので、ここまで話を聞いた限りでは適していないなと思います…

もしやる場合はこちらの記事にレベルブループリントでも受信するという項目があるので参考になると思います。

http://unrealengine.hatenablog.com/entry/2014/10/20/223445

やろうとしていることは、

レベルに複数のトリガーを配置し、動き廻っているときにトリガーで知らせて、その場所で選択可能にし、その時点ならのオプションを選択するかどうか。

例えば、ドアの前だけど「ドアは開くよ」開ける?無視?開けるならボタン押して。>開いた。

ランプの前だけど「ランプは点くよ」点ける?無視?点けるならボタン押して。>色んな色で光るよ。選んで。>赤く点いた。

TVの前だけど「TV観れるよ」観る?無視?観るならボタン押して。>どの番組観る?選んで。ドラマ?ニュース?アニメ?>アニメのどれ?サザエさん?ルパン三世?選んで。

みたいなことになります。

これらがUMG内で処理可能でない場合、レベルブループリントに引っ張り出して処理しようかと考えました。これが下記のノードで良いかこれからですが。

そして、

ノードのつなぎ方を再考してみるとうまく行きました。2段階だけですが。

ただ、問題点はRemoveAllWidgetsで非表示にさせるのは良くないだろうと思っています。HMDとかに影響するでしょうし。

あと、おまけの質問のボタン2度押し(空クリックを含め)はどこに原因が有るでしょうか?

また、初心者のノード接続手順に問題点が有りましたらご指導願います。

選択肢のUMGをトリガー毎にAddViewportして外に出る時にRemovefromParentで大丈夫だと思います。

とりあえず聞いたことを踏まえて試しにやってみました。色々例を作るのは大変なのでライトの色を変えるものだけですが…応用すれば色々出来ると思います。(今回はレベルブループリントにも処理が入っています)

2度押さないといけないのはフォーカスがUIに移っていないからかと思います。Set Input Mode Game and UIやSet Input Mode UIOnlyなどを使えばフォーカス出来ると思います。

2度もお手本のプロジェクトファイルを提示していただき、本当にありがとうございました。なんとか進める事ができそうです。Set Input Mode Game and UIはハンドルロック状態なので、Set Input Mode UIOnlyにしておく方を選びます。

明快で理路整然としたお手本ブループリントに沢山の収益が得られました。

適材適所、役割分担、まさしく実務の基本に忠実な手法・考え方がブループリントでも必要なんですね。私の恥ずかしいノードで進めるには、このままだと恐ろしいことになるのがすぐにわかりました。画像を削除したい気分ですw

聞くは一時の恥、聞かぬは一生の恥。ということで自分に言い聞かせる。。。