DoTweenのコールバック中例外について
C#/Unityでプログラムを作成中、以下の例外が発生しました。
例外を調べたところ、22行目でKeyNotFoundExceptionが発生しています。
ですが、該当するキーは7行目で登録しているので、発生しない筈という認識です。
なぜ発生するのか、ご存知の方おりましたらご教授願えればと思います。
発生している問題・エラーメッセージ
DOTWEEN ► An error inside a tween callback was silently taken care of (Int32 get_Item(Lunalta.FACEIcon)) ► The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <fb001e01371b4adca20013e0ac763896>:0 at *******.***************+<>c__DisplayClass12_2.<UpdateView>b__4 () [0x0005b] in *****\FormationWindow.cs:152
該当のソースコード
C#
1//移動 201:BATTLEPosition ToPosition = CharacterPosition; 302:BATTLEPosition FromPositin = Characters[Character]; 403:FACEIcon ToFACEIcon = transform.Find("Character_" + ToPosition).GetComponent<FACEIcon>(); 504:FACEIcon FromFACEIcon = transform.Find("Character_" + FromPositin).GetComponent<FACEIcon>().Init(Character, 05:FACEIconIDs[Character], textureDataHolder); 606:FACEIconRefCount[ToFACEIcon] = FACEIconRefCount.ContainsKey(ToFACEIcon) ? FACEIconRefCount[ToFACEIcon] + 1 : 1; 707:FACEIconRefCount[FromFACEIcon] = FACEIconRefCount.ContainsKey(FromFACEIcon) ? FACEIconRefCount[FromFACEIcon] + 1 : 1; 808:Sequence NewSequence = DOTween.Sequence() 909: /* ここでキーを追加すると例外が発生しない 1010: .OnStart(() => 1111: { 1212: FACEIconRefCount[ToFACEIcon] = FACEIconRefCount.ContainsKey(ToFACEIcon) ? FACEIconRefCount[ToFACEIcon] + 1 : 1; 1313: FACEIconRefCount[FromFACEIcon] = FACEIconRefCount.ContainsKey(FromFACEIcon) ? FACEIconRefCount[FromFACEIcon] + 1 : 1; 1414: }) 1515: */ 1616: .Append(FromFACEIcon.transform.DOLocalMove(FACEIconDefaultPosition["Character_" + ToPosition], AnimationTime)) 1717: .OnComplete(() => 1818: { 1919: ToFACEIcon.Init(Character, FACEIconIDs[Character], textureDataHolder); 2020: ToFACEIcon.gameObject.SetActive(true); 2121: ///エラー発生箇所、FACEIconRefCountはDictionaryで同クラスのprivateメンバ 2222: FromFACEIcon.gameObject.SetActive(FACEIconRefCount[FromFACEIcon] > 1); 2323: FromFACEIcon.transform.localPosition = FACEIconDefaultPosition["Character_" + FromPositin]; 2424: }); 2525:NewSequence.Play(); 2626:Characters[Character] = ToPosition;
試したこと
試しに6~7行目のDictionaryへの追加をコールバックのOnStart内に移動してみたところ、移動した場合は例外が発生しませんでした。
(コールバック内でのDictionaryへの変更は見えて、コールバック外でのDictionaryへの変更は見えないような挙動に見えますが……)
「DoTween」「コールバック」「KeyNotFoundException」などで調べてみましたが、回答は見つかりませんでした。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017
Unity 2019.4
DoTween
あなたの回答
tips
プレビュー