浏览代码

[unity] Added skinField param to [SpineAttachment] attribute.

pharan 8 年之前
父节点
当前提交
d1a2b3125f

+ 8 - 1
spine-unity/Assets/spine-unity/Editor/SpineAttributeDrawers.cs

@@ -254,8 +254,15 @@ namespace Spine.Unity.Editor {
 			ISkeletonComponent skeletonComponent = GetTargetSkeletonComponent(property);
 			var validSkins = new List<Skin>();
 
+
+
 			if (skeletonComponent != null && targetAttribute.currentSkinOnly) {
-				var currentSkin = skeletonComponent.Skeleton.Skin;
+				Skin currentSkin = null;
+
+				var skinProperty = property.FindPropertyRelative(targetAttribute.skinField);
+				if (skinProperty != null) currentSkin = skeletonComponent.Skeleton.Data.FindSkin(skinProperty.stringValue);
+
+				currentSkin = currentSkin ?? skeletonComponent.Skeleton.Skin;
 				if (currentSkin != null)
 					validSkins.Add(currentSkin);
 				else

+ 4 - 2
spine-unity/Assets/spine-unity/SpineAttributes.cs

@@ -114,6 +114,7 @@ namespace Spine.Unity {
 		public bool returnAttachmentPath = false;
 		public bool currentSkinOnly = false;
 		public bool placeholdersOnly = false;
+		public string skinField = "";
 		public string slotField = "";
 
 		/// <summary>
@@ -127,12 +128,13 @@ namespace Spine.Unity {
 		/// Valid types are SkeletonDataAsset and SkeletonRenderer (and derivatives)
 		/// If left empty and the script the attribute is applied to is derived from Component, GetComponent<SkeletonRenderer>() will be called as a fallback.
 		/// </param>
-		public SpineAttachment (bool currentSkinOnly = true, bool returnAttachmentPath = false, bool placeholdersOnly = false, string slotField = "", string dataField = "", bool includeNone = true) {
+		public SpineAttachment (bool currentSkinOnly = true, bool returnAttachmentPath = false, bool placeholdersOnly = false, string slotField = "", string dataField = "", string skinField = "", bool includeNone = true) {
 			this.currentSkinOnly = currentSkinOnly;
 			this.returnAttachmentPath = returnAttachmentPath;
 			this.placeholdersOnly = placeholdersOnly;
 			this.slotField = slotField;
-			this.dataField = dataField;		
+			this.dataField = dataField;
+			this.skinField = skinField;
 			this.includeNone = includeNone;
 		}