メニューを再表示したときに状態を記憶させたい。

Tabキーでメニューを表示(FirstPersonCharacter)させ、ボタンを押すと照明がオンオフできるボタンを作成(WidgetBlueprint)しました。メニューを一度非表示にし、再びメニューを表示した際に照明のオンオフの状態を記憶していない為、ボタンを押しても反応しない問題があります。
メニューを非表示にしても照明の状態をどこかに記憶させる方法を教えて頂けると幸いです。


恐らく問題になっている部分はここです
記憶していないというより、表示するたびに新品を生成して表示しているため
初期状態になってしまっているという感じです。


すこし雑ではありますが、すでにWidgetを作成済みであれば再生成を行わないといった処理を挟むことで改善すると思います


もう一つの方法としては、WidgetのConstructで必要な情報を取得し、フラグを毎回設定する方法です
(画像は例なので動作は自身で実装してください)

こちらはワールドの状況に対して常に正しい状態となるため不整合が起こりにくいです
こちらの対応を行う場合は、Fadeout時にRemovefromParentで毎回削除すると良いと思われます。
(毎回初期化を行ってほしいため)

ご自身にあった方法で調整をしてみてください

1 Like

回答いただきありがとうございます。
問題点の理解は出来ました。
1つ目に頂いている解決方法を自分なりに解釈して修正してみました。

正直に言いますと2つ目の情報を取得する方法で解決をしたいのですが
素人で知識が足りないので、実装することができませんでした。
可能であれば詳しい実装方法を教えて頂けますと嬉しいです。

そうですね…
自分もLevelVariantSetについては詳しいわけではないため、より良い方法があるやもしれませんが
LevelVariantSetの現在の[有効/無効]状態は以下のように取得することが可能なようです

今回の場合ですと、「このisActiveがTrueの場合LightOnのフラグがTrueになる」といった実装をすることで期待の動作をすると思われます。

1 Like

もし解決したようであればお手数ですが
この質問を「解決済み」に設定してもらえると助かります。

今後同じ問題を抱えた人の助けになります。

1 Like