Optimize GC for SectionalGameObject.

This commit is contained in:
2023-02-07 23:15:11 +08:00
parent 7df5b15e2e
commit 4e9d7e5b87

View File

@@ -104,6 +104,7 @@ namespace Cryville.Crtr.Components {
public SpriteInfo body = new SpriteInfo(); public SpriteInfo body = new SpriteInfo();
public SpriteInfo tail = new SpriteInfo(); public SpriteInfo tail = new SpriteInfo();
Material[] mats;
List<Vector3> vertices; List<Vector3> vertices;
List<float> lengths; List<float> lengths;
float sumLength = 0; float sumLength = 0;
@@ -112,7 +113,7 @@ namespace Cryville.Crtr.Components {
base.Init(); base.Init();
mesh.Init(transform); mesh.Init(transform);
var mats = mesh.Renderer.materials = new Material[] { mesh.NewMaterial, mesh.NewMaterial, mesh.NewMaterial }; mats = mesh.Renderer.materials = new Material[] { mesh.NewMaterial, mesh.NewMaterial, mesh.NewMaterial };
head.Bind(mats[0]); head.Bind(mats[0]);
body.Bind(mats[1]); body.Bind(mats[1]);
tail.Bind(mats[2]); tail.Bind(mats[2]);
@@ -123,7 +124,7 @@ namespace Cryville.Crtr.Components {
protected override void OnDestroy() { protected override void OnDestroy() {
base.OnDestroy(); base.OnDestroy();
Reset(); Reset();
foreach (var m in mesh.Renderer.materials) Material.Destroy(m); foreach (var m in mats) Material.Destroy(m);
if (_shape != null) _shapePool.Return(_shape); if (_shape != null) _shapePool.Return(_shape);
if (vertices != null) { if (vertices != null) {
_ptPool.Return(vertices); _ptPool.Return(vertices);