Răsfoiți Sursa

[unity] Fixed SkeletonGraphic Mesh memory leak on Initialize(). Closes #1714.

Harald Csaszar 5 ani în urmă
părinte
comite
f946fd8b56

+ 11 - 1
spine-unity/Assets/Spine/Runtime/spine-unity/Components/SkeletonGraphic.cs

@@ -426,7 +426,7 @@ namespace Spine.Unity {
 				ScaleY = this.initialFlipY ? -1 : 1
 			};
 
-			meshBuffers = new DoubleBuffered<MeshRendererBuffers.SmartMesh>();
+			InitMeshBuffers();
 			baseTexture = skeletonDataAsset.atlasAssets[0].PrimaryMaterial.mainTexture;
 			canvasRenderer.SetTexture(this.mainTexture); // Needed for overwriting initializations.
 
@@ -478,6 +478,16 @@ namespace Spine.Unity {
 		}
 		#endregion
 
+		protected void InitMeshBuffers () {
+			if (meshBuffers != null) {
+				meshBuffers.GetNext().Clear();
+				meshBuffers.GetNext().Clear();
+			}
+			else {
+				meshBuffers = new DoubleBuffered<MeshRendererBuffers.SmartMesh>();
+			}
+		}
+
 		protected void UpdateMeshSingleCanvasRenderer () {
 			if (canvasRenderers.Count > 0)
 				DisableUnusedCanvasRenderers(usedCount : 0);