浏览代码

fix SubmeshRenderer

ZimM 10 年之前
父节点
当前提交
7414476841
共有 1 个文件被更改,包括 13 次插入17 次删除
  1. 13 17
      spine-unity/Assets/spine-unity/SkeletonRenderer.cs

+ 13 - 17
spine-unity/Assets/spine-unity/SkeletonRenderer.cs

@@ -63,7 +63,6 @@ public class SkeletonRenderer : MonoBehaviour {
 	private MeshFilter meshFilter;
 	private Mesh mesh1, mesh2;
 	private bool useMesh1;
-	private bool meshUpdateRequested;
 	private float[] tempVertices = new float[8];
 	private Vector3[] vertices;
 	private Color32[] colors;
@@ -74,10 +73,6 @@ public class SkeletonRenderer : MonoBehaviour {
 	private SkeletonUtilitySubmeshRenderer[] submeshRenderers;
 	private LastState lastState = new LastState();
 
-	public void RequestMeshUpdate() {
-		meshUpdateRequested = true;
-	}
-
 	public virtual void Reset () {
 		if (meshFilter != null)
 			meshFilter.sharedMesh = null;
@@ -181,11 +176,12 @@ public class SkeletonRenderer : MonoBehaviour {
 	}
 
 	public virtual void LateUpdate () {
-		if (!valid || (!meshRenderer.enabled && !meshUpdateRequested))
+		if (!valid)
 			return;
 
-		// The force update request is only valid for one frame
-		meshUpdateRequested = false;
+		// Exit early if there is nothing to render
+		if (!meshRenderer.enabled && submeshRenderers.Length == 0)
+			return;
 
 		// Count vertices and submesh triangles.
 		int vertexCount = 0;
@@ -456,7 +452,7 @@ public class SkeletonRenderer : MonoBehaviour {
 						color.r = (byte)(r * slot.r * skinnedMeshAttachment.r * color.a);
 						color.g = (byte)(g * slot.g * skinnedMeshAttachment.g * color.a);
 						color.b = (byte)(b * slot.b * skinnedMeshAttachment.b * color.a);
-                        if (slot.data.blendMode == BlendMode.additive) color.a = 0;
+						if (slot.data.blendMode == BlendMode.additive) color.a = 0;
 
 						float[] meshUVs = skinnedMeshAttachment.uvs;
 						float z = i * zSpacing;
@@ -549,14 +545,14 @@ public class SkeletonRenderer : MonoBehaviour {
 		addSubmeshArgumentsTemp.CopyTo(addSubmeshArgumentsCurrentMesh.Items);
 
 		if (submeshRenderers.Length > 0) {
-		    for (int i = 0; i < submeshRenderers.Length; i++) {
-		        SkeletonUtilitySubmeshRenderer submeshRenderer = submeshRenderers[i];
-		        if (submeshRenderer.submeshIndex < sharedMaterials.Length) {
-		            submeshRenderer.SetMesh(meshRenderer, useMesh1 ? mesh1 : mesh2, sharedMaterials[submeshRenderer.submeshIndex]);
-		        } else {
-		            submeshRenderer.GetComponent<Renderer>().enabled = false;
-		        }
-		    }
+			for (int i = 0; i < submeshRenderers.Length; i++) {
+				SkeletonUtilitySubmeshRenderer submeshRenderer = submeshRenderers[i];
+				if (submeshRenderer.submeshIndex < sharedMaterials.Length) {
+					submeshRenderer.SetMesh(meshRenderer, useMesh1 ? mesh1 : mesh2, sharedMaterials[submeshRenderer.submeshIndex]);
+				} else {
+					submeshRenderer.GetComponent<Renderer>().enabled = false;
+				}
+			}
 		}
 
 		useMesh1 = !useMesh1;