modular-avatar
modular-avatar copied to clipboard
AnimatorControllerLayer.stateMachine が null の場合に例外が発生する
カタナキット などで発生するらしい...?
追加する側でもそうでなくても Layerの stateMachines にnull が入っている物が存在すると例外が発生するようです。 Invalid なレイヤーを追加するギミック側が悪いとも言えますが、Unityで発生しうる挙動ではあるので null チェックして回避したほうがいいでしょう...
恐らく同一のエラーが発生するものが作成できたのでここに乗っけておきます。
再現環境 - NSMCMA.zip
- NDMF - v1.5.0-rc.1
- MA - f9abb5c4fc673025bf90a5d264c3ebbda8301a3d
一応リリースされているバージョンでも発生するようですがどのバージョンかの情報は聞けませんでした。
発生するStackTrace
System.NullReferenceException: Object reference not set to an instance of an object
at nadena.dev.modular_avatar.animation.AnimatorCombiner+<>c__DisplayClass24_0+<<WalkAllStates>g__VisitStateMachine|0>d.MoveNext () [0x0005b] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:525
at nadena.dev.modular_avatar.animation.AnimatorCombiner+<WalkAllStates>d__24.MoveNext () [0x000a0] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:516
at nadena.dev.modular_avatar.animation.AnimatorCombiner.mapStateMachine (System.String basePath, UnityEditor.Animations.AnimatorStateMachine layerStateMachine) [0x00084] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:577
at nadena.dev.modular_avatar.animation.AnimatorCombiner.insertLayer (System.String basePath, UnityEditor.Animations.AnimatorControllerLayer layer, System.Boolean first, System.Nullable`1[T] writeDefaults, UnityEditor.Animations.AnimatorControllerLayer[] layers) [0x00001] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:466
at nadena.dev.modular_avatar.animation.AnimatorCombiner.AddController (System.String basePath, UnityEditor.Animations.AnimatorController controller, System.Nullable`1[T] writeDefaults, System.Boolean forceFirstLayerWeight) [0x001ae] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:433
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) [0x000c4] in .\Packages\modular-avatar\Editor\MergeAnimatorProcessor.cs:157
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) [0x0015a] in .\Packages\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) [0x000e0] in .\Packages\modular-avatar\Editor\MergeAnimatorProcessor.cs:89
at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:193
at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Fluent\Pass.cs:64
at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Solver\PluginResolver.cs:39
at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in .\Packages\ndmf\Editor\API\BuildContext.cs:350
at nadena.dev.modular_avatar.animation.AnimatorCombiner+<>c__DisplayClass24_0+<<WalkAllStates>g__VisitStateMachine|0>d.MoveNext () [0x0005b] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:525
at nadena.dev.modular_avatar.animation.AnimatorCombiner+<WalkAllStates>d__24.MoveNext () [0x000a0] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:516
at nadena.dev.modular_avatar.animation.AnimatorCombiner.mapStateMachine (System.String basePath, UnityEditor.Animations.AnimatorStateMachine layerStateMachine) [0x00084] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:577
at nadena.dev.modular_avatar.animation.AnimatorCombiner.insertLayer (System.String basePath, UnityEditor.Animations.AnimatorControllerLayer layer, System.Boolean first, System.Nullable`1[T] writeDefaults, UnityEditor.Animations.AnimatorControllerLayer[] layers) [0x00001] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:466
at nadena.dev.modular_avatar.animation.AnimatorCombiner.AddController (System.String basePath, UnityEditor.Animations.AnimatorController controller, System.Nullable`1[T] writeDefaults, System.Boolean forceFirstLayerWeight) [0x001ae] in .\Packages\modular-avatar\Editor\Animation\AnimatorCombiner.cs:433
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) [0x000c4] in .\Packages\modular-avatar\Editor\MergeAnimatorProcessor.cs:157
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) [0x0015a] in .\Packages\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) [0x000e0] in .\Packages\modular-avatar\Editor\MergeAnimatorProcessor.cs:89
at nadena.dev.modular_avatar.core.editor.plugin.MergeAnimatorPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:193
at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Fluent\Pass.cs:64
at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Solver\PluginResolver.cs:39
at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in .\Packages\ndmf\Editor\API\BuildContext.cs:350
System.InvalidCastException: Specified cast is not valid.
at nadena.dev.modular_avatar.animation.AnimationServicesContext.AddPropertyDefinition (UnityEngine.AnimatorControllerParameter paramDef) [0x00001] in .\Packages\modular-avatar\Editor\Animation\AnimationServicesContext.cs:92
at nadena.dev.modular_avatar.animation.ReadableProperty.ForBinding (System.String path, System.Type componentType, System.String property) [0x00168] in .\Packages\modular-avatar\Editor\Animation\ReadableProperty.cs:79
at nadena.dev.modular_avatar.animation.ReadableProperty.ForActiveSelf (System.String path) [0x00001] in .\Packages\modular-avatar\Editor\Animation\ReadableProperty.cs:144
at nadena.dev.modular_avatar.animation.AnimationServicesContext.GetActiveSelfProxy (UnityEngine.GameObject obj) [0x00032] in .\Packages\modular-avatar\Editor\Animation\AnimationServicesContext.cs:106
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.GetActiveSelfProxy (UnityEngine.GameObject obj) [0x0000f] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:33
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.BuildConditions (UnityEngine.Component controllingComponent, nadena.dev.modular_avatar.core.editor.ReactionRule rule) [0x000b0] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:70
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.ObjectRule (nadena.dev.modular_avatar.core.editor.TargetProp key, UnityEngine.Component controllingObject, System.Single value) [0x00009] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:15
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.FindShapes (UnityEngine.GameObject root) [0x001bf] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:132
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.Analyze (UnityEngine.GameObject root) [0x0003d] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.cs:99
at nadena.dev.modular_avatar.core.editor.ReactiveObjectPass.Execute () [0x00001] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectPass.cs:36
at nadena.dev.modular_avatar.core.editor.plugin.PluginDefinition+<>c.<Configure>b__9_7 (nadena.dev.ndmf.BuildContext ctx) [0x00000] in .\Packages\modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:60
at nadena.dev.ndmf.AnonymousPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Fluent\Pass.cs:42
at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Solver\PluginResolver.cs:39
at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in .\Packages\ndmf\Editor\API\BuildContext.cs:350
at nadena.dev.modular_avatar.animation.AnimationServicesContext.AddPropertyDefinition (UnityEngine.AnimatorControllerParameter paramDef) [0x00001] in .\Packages\modular-avatar\Editor\Animation\AnimationServicesContext.cs:92
at nadena.dev.modular_avatar.animation.ReadableProperty.ForBinding (System.String path, System.Type componentType, System.String property) [0x00168] in .\Packages\modular-avatar\Editor\Animation\ReadableProperty.cs:79
at nadena.dev.modular_avatar.animation.ReadableProperty.ForActiveSelf (System.String path) [0x00001] in .\Packages\modular-avatar\Editor\Animation\ReadableProperty.cs:144
at nadena.dev.modular_avatar.animation.AnimationServicesContext.GetActiveSelfProxy (UnityEngine.GameObject obj) [0x00032] in .\Packages\modular-avatar\Editor\Animation\AnimationServicesContext.cs:106
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.GetActiveSelfProxy (UnityEngine.GameObject obj) [0x0000f] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:33
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.BuildConditions (UnityEngine.Component controllingComponent, nadena.dev.modular_avatar.core.editor.ReactionRule rule) [0x000b0] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:70
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.ObjectRule (nadena.dev.modular_avatar.core.editor.TargetProp key, UnityEngine.Component controllingObject, System.Single value) [0x00009] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:15
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.FindShapes (UnityEngine.GameObject root) [0x001bf] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.LocateReactions.cs:132
at nadena.dev.modular_avatar.core.editor.ReactiveObjectAnalyzer.Analyze (UnityEngine.GameObject root) [0x0003d] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectAnalyzer.cs:99
at nadena.dev.modular_avatar.core.editor.ReactiveObjectPass.Execute () [0x00001] in .\Packages\modular-avatar\Editor\ReactiveObjects\AnimationGeneration\ReactiveObjectPass.cs:36
at nadena.dev.modular_avatar.core.editor.plugin.PluginDefinition+<>c.<Configure>b__9_7 (nadena.dev.ndmf.BuildContext ctx) [0x00000] in .\Packages\modular-avatar\Editor\PluginDefinition\PluginDefinition.cs:60
at nadena.dev.ndmf.AnonymousPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Fluent\Pass.cs:42
at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in .\Packages\ndmf\Editor\API\Solver\PluginResolver.cs:39
at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in .\Packages\ndmf\Editor\API\BuildContext.cs:350