ベストアンサーを選んでから自分の誤解に気付き、問題を解決しきれなかったので
前回の質問の続きとして改めて質問させて頂きます。
内容としては表題の通り、Dictionary(またはList)のAddもしくはRemoveでイベントを反応させたいです。
そして、前回「List型またはDictionary型での変化でイベントを発生させたい」という質問では、以下の様にnewで「別Dictionaryを都度代入すれば反応する」という回答を頂きました。
C#
1Dictionary<string, string> test = new Dictionary<string, string>() { { "1", "test"} }; 2CameraManager.Instance.DictionaryValue.Value = test;
またこの場合において、以下の様にValueの型にNotificationObjectで定義すれば、Valueの書き換えでもイベントを起こさせることはできました。
C#
1public NotificationObject<Dictionary<string, NotificationObject<string>>> DictionaryValues 2 = new NotificationObject<Dictionary<string, NotificationObject<string>>>();
但し、前回Hawnさんの回答でもありますように、以下のようなAdd(Remove含む)ではイベントは発生しません。
C#
1CameraManager.Instance.DictionaryValue.Value.Add( "1", "test" );
この場合、結局Dictionaryそれ自体は一つまでしか入らず、また事前に定義されたキーの範囲でしかイベントを起こせないので、各変数を一つ一つ用意する方法(変数の数は固定)とほとんど大差はありません。
そして、前回はこの部分を別の意味として理解してしまった為、手元のサンプルではAddでの確認をせずにベストアンサーとしました。
ですが、実際に組んでいる中で「動的な変数の増減でイベントを発生させたい」という本来の目的が達成できない事に気付き、再び質問として上げた次第です。
環境
環境:Unity 2021.1.25f1(2D)
IDE:VisualStudio2019
前回質問:ListまたはDictionaryの変化でイベントを発生させたい
※その他内容については前回質問と同様の為、上記リンク先の参照願います。
回答2件
あなたの回答
tips
プレビュー