
今回、ワールドに配置したWidgetの表示内容をゲームの進行に合わせて差し替えたい。このための方法がWidgetコンポーネントには存在せず、強引に差し替えようとしても上手くいかない。
実はウィジェットブループリント側にWidgetSwitcherというものがあり、Widgetの差し替えはこれを使うのが正攻法となっている。メニュー画面などはこれを使うのが王道のようである。
https://www.youtube.com/watch?v=aX7W1dKOGcU
詳しくは上記動画の通りである。ここでは実際に行った感想や補足を述べる。
まず、WidgetSwitcherの子にウィジェットブループリントを配置する方法だが、これはコンテンツブラウザから行うようだった。パレットからも配置できるはずだと思うが、この方法は分からなかった。D&Dは「階層」でも「ビュー」でもどちらでもよい。

なお、コンテンツブラウザは上部メニューのウィンドウから追加できる。

WidgetSwitcherの子は上から順にindex=0, 1, 2, 3…となっている。WidgetSwitcherの詳細にてActive Widget Indexを変更すると表示物が切り替わるのが確認できる。

WidgetSwitcherを持つウィジェットブループリントを用意出来たら、これをBPのWidgetコンポーネントに指定する。

WidgetSwitcherにアクセスするにはWidgetコンポーネントに対してGetUserWidgetObjectを行い、これを作成したウィジェットブループリントにキャストして行う。今後頻繁に使うので、今回は変数に保存した。

あとは条件に応じてSetActiveWidgetIndexでindexを変更することで表示物を切り替えることができる。
