From f0332cd36e764436621c25b21c48a99fc1a758f0 Mon Sep 17 00:00:00 2001 From: yokra9 <53964890+yokra9@users.noreply.github.com> Date: Wed, 18 Jan 2023 19:25:36 +0900 Subject: [PATCH] Fix UnassignedReferenceException when `rootTransform` of `PhysBone` is none --- Editor/VRoidAvatar.cs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/Editor/VRoidAvatar.cs b/Editor/VRoidAvatar.cs index 2446ac8..9c8244c 100644 --- a/Editor/VRoidAvatar.cs +++ b/Editor/VRoidAvatar.cs @@ -63,7 +63,7 @@ public class VRoidAvatar //// Expressions public bool expressionsMenu = true; public bool expressionParameters = true; - + // Pipeline Manager public bool blueprintId = true; @@ -178,8 +178,8 @@ public void CopyToTarget(GameObject targetObject) { errors.Add("コピー先アバターにVRCAvatarDescriptorコンポーネントがないためコピーできませんでした。\n VRCAvatarDescriptor配下の項目のチェックを外すか、コピー先アバターにコンポーネントを追加してください"); } - - if(ShouldCopyVRCAvatarDescripter() && sourceAvatarDescriptor != null && targetAvatarDescriptor != null) + + if (ShouldCopyVRCAvatarDescripter() && sourceAvatarDescriptor != null && targetAvatarDescriptor != null) { if (viewPosition) { @@ -374,13 +374,16 @@ public void CopyToTarget(GameObject targetObject) { if (avatarMode == 0) { - if (checkExclutionPhysBoneContain(phy.rootTransform.name)) - { - continue; - } - else if (!checkPhysBoneContain(phy.rootTransform.name) && !physBones_other) + if (phy.rootTransform != null) { - continue; + if (checkExclutionPhysBoneContain(phy.rootTransform.name)) + { + continue; + } + else if (!checkPhysBoneContain(phy.rootTransform.name) && !physBones_other) + { + continue; + } } } ComponentUtility.CopyComponent(phy); @@ -390,7 +393,10 @@ public void CopyToTarget(GameObject targetObject) VRCPhysBone[] p = targetObj.GetComponents(); VRCPhysBone newPhysBone = p[p.Length - 1]; - newPhysBone.rootTransform = targetObject.transform.Find(newPhysBone.rootTransform.gameObject.GetFullPath()).gameObject.transform; + if (phy.rootTransform != null) + { + newPhysBone.rootTransform = targetObject.transform.Find(newPhysBone.rootTransform.gameObject.GetFullPath()).gameObject.transform; + } List new_coliders = new List(); foreach (var tarcol in newPhysBone.colliders)