modular-avatar
modular-avatar copied to clipboard
特定のアバターにおいてMAを使用する際にKeyNotFoundExceptionのエラーが発生します
特定のアバターに対してMAを使用する際に下記のエラーが発生します。 お手数ですが、ご確認をよろしくお願いいたします。
使用アバター:https://xelevia.booth.pm/items/3002686 導入システム:https://booth.pm/ja/items/5509228 使用環境:Unity 2022.3.6f1 VRChat SDK 3.5.1 Modular Avatar 1.9.8
エラー内容:(下記のとおり)
System.Collections.Generic.KeyNotFoundException: The given key 'Action' was not present in the dictionary.
at System.Collections.Generic.Dictionary2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.MergeSingle (nadena.dev.modular_avatar.core.editor.BuildContext context, nadena.dev.modular_avatar.animation.AnimatorCombiner session, nadena.dev.modular_avatar.core.ModularAvatarMergeAnimator merge) [0x00071] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:153 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.ProcessLayerType (nadena.dev.modular_avatar.core.editor.BuildContext context, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType layerType, System.Collections.Generic.List
1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128
at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89
at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177
at nadena.dev.ndmf.Pass1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64 at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36 at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:337 at System.Collections.Generic.Dictionary
2[TKey,TValue].get_Item (TKey key) [0x0001e] in 1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128 at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89 at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177 at nadena.dev.ndmf.Pass
1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64
at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36
at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:337
これについては調査する予定です
申し訳ありません。 上記内容につきましては、自己解決しました。 古いアバターだったため、Atatar descriptorが問題だったようです。 既存のAtatar descriptorゆ削除したうえで入れ直したら起動しました。
わかりました。しかし、MA側にバグがあるのは変わりません。上記のスタックトレースで十分調査できると思いますので忘れないようにここまま開いたままにさせてください。
承知しました お手数ですが、よろしくお願いいたします
Howdy! I also ran into this error on my Kikyo avatar, and the issue ended up being with the Playable Layers dictionary.
As you can see, I don't have an Action layer slot, but instead two FX layer slots. So, when searching for the Action layer in the dictionary, the key did not exist.
To fix this, I hit the "Reset to Default" button and re-assigned the layers. This could also be fixed on the plugin side by checking if the key exists before performing the MA Merge Animator.
Hope this helps resolve the issue! And here's my Stack Trace before I reset the layers:
System.Collections.Generic.KeyNotFoundException: The given key 'Action' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0
at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.MergeSingle (nadena.dev.modular_avatar.core.editor.BuildContext context, nadena.dev.modular_avatar.animation.AnimatorCombiner session, nadena.dev.modular_avatar.core.ModularAvatarMergeAnimator merge) [0x00071] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:153
at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.ProcessLayerType (nadena.dev.modular_avatar.core.editor.BuildContext context, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType layerType, System.Collections.Generic.List`1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128
at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89
at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177
at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64
at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36
at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:337
at System.Collections.Generic.Dictionary`2[TKey,TValue].get_Item (TKey key) [0x0001e] in <eef08f56e2e042f1b3027eca477293d9>:0
at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.MergeSingle (nadena.dev.modular_avatar.core.editor.BuildContext context, nadena.dev.modular_avatar.animation.AnimatorCombiner session, nadena.dev.modular_avatar.core.ModularAvatarMergeAnimator merge) [0x00071] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:153
at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.ProcessLayerType (nadena.dev.modular_avatar.core.editor.BuildContext context, VRC.SDK3.Avatars.Components.VRCAvatarDescriptor+AnimLayerType layerType, System.Collections.Generic.List`1[T] toMerge) [0x00140] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:128
at nadena.dev.modular_avatar.core.editor.MergeAnimatorProcessor.OnPreprocessAvatar (UnityEngine.GameObject avatarGameObject, nadena.dev.modular_avatar.core.editor.BuildContext context) [0x000b5] in .\Packages\nadena.dev.modular-avatar\Editor\MergeAnimatorProcessor.cs:89
at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:177
at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Fluent\Pass.cs:64
at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00000] in .\Packages\nadena.dev.ndmf\Editor\API\Solver\PluginResolver.cs:36
at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00124] in .\Packages\nadena.dev.ndmf\Editor\API\BuildContext.cs:337
Thanks! This might still need to be an error, since the avatar descriptor is corrupt and it’s not clear what to do if eg there are two FX layers… but at least it can be one that is more clear about what is wrong.