diff --git a/Assets/VRM/Runtime/BlendShape/VRMBlendShapeProxy.cs b/Assets/VRM/Runtime/BlendShape/VRMBlendShapeProxy.cs index 1721c6dab..ff74af168 100644 --- a/Assets/VRM/Runtime/BlendShape/VRMBlendShapeProxy.cs +++ b/Assets/VRM/Runtime/BlendShape/VRMBlendShapeProxy.cs @@ -17,9 +17,10 @@ namespace VRM } BlendShapeMerger m_merger; - + bool m_destroyed = false; private void OnDestroy() { + m_destroyed = true; if (m_merger != null) { m_merger.RestoreMaterialInitialValues(BlendShapeAvatar.Clips); @@ -28,13 +29,25 @@ namespace VRM private void Start() { - if (BlendShapeAvatar != null) + if (m_destroyed) { - if (m_merger == null) - { - m_merger = new BlendShapeMerger(BlendShapeAvatar.Clips, transform); - } + return; } + if (BlendShapeAvatar == null) + { + return; + } + // m_merger の null check は必用か? + m_merger = new BlendShapeMerger(BlendShapeAvatar.Clips, transform); + } + + /// + /// m_merger を(再)作成する。 + /// BlendShapeAvatar.Clips に対する変更を反映できます。 + /// + public void Reinitialize() + { + Start(); } ///