瀏覽代碼

[unity] BoneFollower collider warnings and convenience button.

pharan 8 年之前
父節點
當前提交
4633c903d3
共有 1 個文件被更改,包括 19 次插入0 次删除
  1. 19 0
      spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs

+ 19 - 0
spine-unity/Assets/spine-unity/Editor/BoneFollowerInspector.cs

@@ -151,6 +151,10 @@ namespace Spine.Unity.Editor {
 				}
 			}
 
+			if (!targetBoneFollower.valid) {
+				needsReset = true;
+			}
+
 			if (targetBoneFollower.valid) {
 				EditorGUI.BeginChangeCheck();
 				EditorGUILayout.PropertyField(boneName);
@@ -160,6 +164,21 @@ namespace Spine.Unity.Editor {
 				EditorGUILayout.PropertyField(followZPosition);
 				EditorGUILayout.PropertyField(followLocalScale);
 				EditorGUILayout.PropertyField(followSkeletonFlip);
+
+				bool hasCollider2D = targetBoneFollower.GetComponent<Collider2D>() != null || targetBoneFollower.GetComponent<BoundingBoxFollower>() != null;
+				bool hasCollider3D = !hasCollider2D && targetBoneFollower.GetComponent<Collider>();
+				if (hasCollider2D || hasCollider3D) {
+					if (targetBoneFollower.GetComponent<Rigidbody2D>() == null) {
+						using (new SpineInspectorUtility.BoxScope()) {
+							EditorGUILayout.HelpBox("Collider detected. Unity recommends adding a Rigidbody to the parent Transforms of any colliders that are intended to be dynamically repositioned and rotated.", MessageType.Warning);
+							string rbLabel = hasCollider2D ? "Add Rigidbody2D" : "Add Rigidbody";
+							var rbType = hasCollider2D ? typeof(Rigidbody2D) : typeof(Rigidbody);
+							var rbContent = new GUIContent(rbLabel, "Add a rigidbody to this GameObject to be the Box2D parent of the attached collider.");
+							rbContent.image = EditorGUIUtility.ObjectContent(null, rbType).image;
+							if (SpineInspectorUtility.CenteredButton(rbContent)) targetBoneFollower.gameObject.AddComponent(rbType);
+						}
+					}
+				}
 			} else {
 				var boneFollowerSkeletonRenderer = targetBoneFollower.skeletonRenderer;
 				if (boneFollowerSkeletonRenderer == null) {