فهرست منبع

[unity] Improved Editor behaviour of RenderExistingMesh component. Removed unnecessary SkeletonGraphic codeparts from it.

Harald Csaszar 5 سال پیش
والد
کامیت
f75adfaca8
1فایلهای تغییر یافته به همراه22 افزوده شده و 14 حذف شده
  1. 22 14
      spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs

+ 22 - 14
spine-unity/Assets/Spine Examples/Scripts/Sample Components/RenderExistingMesh.cs

@@ -94,24 +94,29 @@ namespace Spine.Unity.Examples {
 				skeletonRenderer.OnMeshAndMaterialsUpdated += UpdateOnCallback;
 				updateViaSkeletonCallback = true;
 			}
-			var skeletonGraphic = referenceRenderer.GetComponent<SkeletonGraphic>();
-			if (skeletonGraphic) {
-				skeletonGraphic.OnMeshAndMaterialsUpdated -= UpdateOnCallback;
-				skeletonGraphic.OnMeshAndMaterialsUpdated += UpdateOnCallback;
-				updateViaSkeletonCallback = true;
-			}
-
 			referenceMeshFilter = referenceRenderer.GetComponent<MeshFilter>();
 			ownRenderer = this.GetComponent<MeshRenderer>();
 			ownMeshFilter = this.GetComponent<MeshFilter>();
 
-			for (int i = 0; i < replacementMaterials.Length; ++i) {
-				var entry = replacementMaterials[i];
-				replacementMaterialDict[entry.originalMaterial] = entry.replacementMaterial;
+			InitializeDict();
+		}
+
+		#if UNITY_EDITOR
+		private void Update () {
+			if (!Application.isPlaying) {
+				InitializeDict();
 			}
 		}
+		#endif
 
 		void LateUpdate () {
+			#if UNITY_EDITOR
+			if (!Application.isPlaying) {
+				UpdateMaterials();
+				return;
+			}
+			#endif
+
 			if (updateViaSkeletonCallback)
 				return;
 			UpdateMaterials();
@@ -121,10 +126,6 @@ namespace Spine.Unity.Examples {
 			UpdateMaterials();
 		}
 
-		void UpdateOnCallback (SkeletonGraphic r) {
-			UpdateMaterials();
-		}
-
 		void UpdateMaterials () {
 			ownMeshFilter.sharedMesh = referenceMeshFilter.sharedMesh;
 
@@ -140,5 +141,12 @@ namespace Spine.Unity.Examples {
 			}
 			ownRenderer.sharedMaterials = sharedMaterials;
 		}
+
+		void InitializeDict () {
+			for (int i = 0; i < replacementMaterials.Length; ++i) {
+				var entry = replacementMaterials[i];
+				replacementMaterialDict[entry.originalMaterial] = entry.replacementMaterial;
+			}
+		}
 	}
 }