modular-avatar icon indicating copy to clipboard operation
modular-avatar copied to clipboard

NDMFプラグインが動的生成したMeshSettingsでNullReferenceException

Open kaikoga opened this issue 1 year ago • 0 comments

  • NDMF プラグインから BuildPhase.Generating などで AddComponent<ModularAvatarMeshSettings>() する
  • 動的生成した ModularAvatarMeshSettings の InheritBoundsModularAvatarMeshSettings.InheritMode.DontSet などに設定する

Stack trace

System.NullReferenceException: Object reference not set to an instance of an object
  at nadena.dev.modular_avatar.core.editor.MeshSettingsPass.MergeSettings (UnityEngine.Transform avatarRoot, UnityEngine.Transform referenceObject) [0x00096] in ./modular-avatar/Editor/MeshSettingsPass.cs:84 
  at nadena.dev.modular_avatar.core.editor.MeshSettingsPass.ProcessMesh (UnityEngine.Renderer mesh) [0x00001] in ./modular-avatar/Editor/MeshSettingsPass.cs:97 
  at nadena.dev.modular_avatar.core.editor.MeshSettingsPass.OnPreprocessAvatar () [0x0001d] in ./modular-avatar/Editor/MeshSettingsPass.cs:27 
  at nadena.dev.modular_avatar.core.editor.plugin.MeshSettingsPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in ./modular-avatar/Editor/PluginDefinition/PluginDefinition.cs:183 
  at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in ./ndmf/Editor/API/Fluent/Pass.cs:64 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in ./ndmf/Editor/API/Solver/PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in ./ndmf/Editor/API/BuildContext.cs:350 
  at nadena.dev.modular_avatar.core.editor.MeshSettingsPass.MergeSettings (UnityEngine.Transform avatarRoot, UnityEngine.Transform referenceObject) [0x00096] in ./modular-avatar/Editor/MeshSettingsPass.cs:84 
  at nadena.dev.modular_avatar.core.editor.MeshSettingsPass.ProcessMesh (UnityEngine.Renderer mesh) [0x00001] in ./modular-avatar/Editor/MeshSettingsPass.cs:97 
  at nadena.dev.modular_avatar.core.editor.MeshSettingsPass.OnPreprocessAvatar () [0x0001d] in ./modular-avatar/Editor/MeshSettingsPass.cs:27 
  at nadena.dev.modular_avatar.core.editor.plugin.MeshSettingsPluginPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in ./modular-avatar/Editor/PluginDefinition/PluginDefinition.cs:183 
  at nadena.dev.ndmf.Pass`1[T].nadena.dev.ndmf.IPass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in ./ndmf/Editor/API/Fluent/Pass.cs:64 
  at nadena.dev.ndmf.ConcretePass.Execute (nadena.dev.ndmf.BuildContext context) [0x00001] in ./ndmf/Editor/API/Solver/PluginResolver.cs:36 
  at nadena.dev.ndmf.BuildContext.RunPass (nadena.dev.ndmf.ConcretePass pass) [0x00135] in ./ndmf/Editor/API/BuildContext.cs:350 

Workaround

  var meshSettings = modularRoot.gameObject.AddComponent<ModularAvatarMeshSettings>();
  meshSettings.InheritBounds = ModularAvatarMeshSettings.InheritMode.DontSet;
+ meshSettings.RootBone = new AvatarObjectReference();

kaikoga avatar Jun 23 '24 02:06 kaikoga