فهرست منبع

[unity] SkeletonDataModifierAsset

pharan 7 سال پیش
والد
کامیت
c741ed18c9

+ 2 - 2
spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/BlendModeMaterialsAsset.cs

@@ -38,14 +38,14 @@ using Spine.Unity;
 
 namespace Spine.Unity {
 	[CreateAssetMenu(menuName = "Spine/Blend Mode Materials Asset", order = 200)]
-	public class BlendModeMaterialsAsset : ScriptableObject {
+	public class BlendModeMaterialsAsset : SkeletonDataModifierAsset {
 		public Material multiplyMaterialTemplate;
 		public Material screenMaterialTemplate;
 		public Material additiveMaterialTemplate;
 
 		public bool applyAdditiveMaterial;
 
-		public void Apply (SkeletonData skeletonData) {
+		public override void Apply (SkeletonData skeletonData) {
 			ApplyMaterials(skeletonData, multiplyMaterialTemplate, screenMaterialTemplate, additiveMaterialTemplate, applyAdditiveMaterial);
 		}
 

+ 10 - 3
spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/SkeletonDataAsset.cs

@@ -29,6 +29,7 @@
  *****************************************************************************/
 
 using System;
+using System.Collections.Generic;
 using System.IO;
 using UnityEngine;
 
@@ -40,7 +41,6 @@ namespace Spine.Unity {
 	public class SkeletonDataAsset : ScriptableObject {
 		#region Inspector
 		public AtlasAssetBase[] atlasAssets = new AtlasAssetBase[0];
-		public BlendModeMaterialsAsset blendModeMaterials;
 
 		#if SPINE_TK2D
 		public tk2dSpriteCollectionData spriteCollection;
@@ -49,6 +49,10 @@ namespace Spine.Unity {
 		public float scale = 0.01f;
 		#endif
 		public TextAsset skeletonJSON;
+
+		[Tooltip("Use SkeletonDataModifierAssets to apply changes to the SkeletonData after being loaded, such as apply blend mode Materials to Attachments under slots with special blend modes.")]
+		public List<SkeletonDataModifierAsset> skeletonDataModifiers = new List<SkeletonDataModifierAsset>();
+
 		[SpineAnimation(includeNone: false)]
 		public string[] fromAnimation = new string[0];
 		[SpineAnimation(includeNone: false)]
@@ -165,8 +169,11 @@ namespace Spine.Unity {
 
 			}
 
-			if (blendModeMaterials != null)
-				blendModeMaterials.Apply(loadedSkeletonData);
+			if (skeletonDataModifiers != null) {
+				foreach (var m in skeletonDataModifiers) {
+					if (m != null) m.Apply(loadedSkeletonData);
+				}
+			}
 
 			this.InitializeWithData(loadedSkeletonData);
 

+ 40 - 0
spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/SkeletonDataModifierAsset.cs

@@ -0,0 +1,40 @@
+/******************************************************************************
+ * Spine Runtimes Software License v2.5
+ *
+ * Copyright (c) 2013-2016, Esoteric Software
+ * All rights reserved.
+ *
+ * You are granted a perpetual, non-exclusive, non-sublicensable, and
+ * non-transferable license to use, install, execute, and perform the Spine
+ * Runtimes software and derivative works solely for personal or internal
+ * use. Without the written permission of Esoteric Software (see Section 2 of
+ * the Spine Software License Agreement), you may not (a) modify, translate,
+ * adapt, or develop new applications using the Spine Runtimes or otherwise
+ * create derivative works or improvements of the Spine Runtimes or (b) remove,
+ * delete, alter, or obscure any trademarks or any copyright, trademark, patent,
+ * or other intellectual property or proprietary rights notices on or in the
+ * Software, including any copy thereof. Redistributions in binary or source
+ * form must include this license and terms.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+ * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
+ * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+ * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *****************************************************************************/
+
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Spine.Unity {
+	/// <summary>Can be stored by SkeletonDataAsset to automatically apply modifications to loaded SkeletonData.</summary>
+	public abstract class SkeletonDataModifierAsset : ScriptableObject {
+		public abstract void Apply (SkeletonData skeletonData);
+	}
+}

+ 12 - 0
spine-unity/Assets/Spine/Runtime/spine-unity/Asset Types/SkeletonDataModifierAsset.cs.meta

@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 79a44aba1f342f440965874280b4c318
+timeCreated: 1536412736
+licenseType: Pro
+MonoImporter:
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: