[unity] Fixed BoneFollower MissingReferenceException when skeleton is destroyed. Closes #2903.

This commit is contained in:
Harald Csaszar 2025-08-07 15:02:57 +02:00
parent 8ddb2d8d0c
commit 659e043f1b
2 changed files with 6 additions and 4 deletions

View File

@ -171,8 +171,9 @@ namespace Spine.Unity {
q.w = Mathf.Cos(halfRotation); q.w = Mathf.Cos(halfRotation);
thisTransform.localRotation = q; thisTransform.localRotation = q;
} }
} else { } else { // For special cases: Use transform world properties if transform relationship is complicated
// For special cases: Use transform world properties if transform relationship is complicated if (!skeletonTransform) return;
Vector3 targetWorldPosition = skeletonTransform.TransformPoint(new Vector3(bone.WorldX, bone.WorldY, 0f)); Vector3 targetWorldPosition = skeletonTransform.TransformPoint(new Vector3(bone.WorldX, bone.WorldY, 0f));
if (!followZPosition) targetWorldPosition.z = thisTransform.position.z; if (!followZPosition) targetWorldPosition.z = thisTransform.position.z;
if (!followXYPosition) { if (!followXYPosition) {

View File

@ -149,8 +149,9 @@ namespace Spine.Unity {
followXYPosition ? bone.WorldY * scale + offset.y : thisTransform.localPosition.y, followXYPosition ? bone.WorldY * scale + offset.y : thisTransform.localPosition.y,
followZPosition ? 0f : thisTransform.localPosition.z); followZPosition ? 0f : thisTransform.localPosition.z);
if (followBoneRotation) thisTransform.localRotation = bone.GetQuaternion(); if (followBoneRotation) thisTransform.localRotation = bone.GetQuaternion();
} else { } else { // For special cases: Use transform world properties if transform relationship is complicated
// For special cases: Use transform world properties if transform relationship is complicated if (!skeletonTransform) return;
Vector3 targetWorldPosition = skeletonTransform.TransformPoint( Vector3 targetWorldPosition = skeletonTransform.TransformPoint(
new Vector3(bone.WorldX * scale + offset.x, bone.WorldY * scale + offset.y, 0f)); new Vector3(bone.WorldX * scale + offset.x, bone.WorldY * scale + offset.y, 0f));
if (!followZPosition) targetWorldPosition.z = thisTransform.position.z; if (!followZPosition) targetWorldPosition.z = thisTransform.position.z;