Screenshot vom Profiler:
Profiler
Code: Select all
public void UpdateColliders(List pixelData, ITextureSource textureSource)
{
PPU = textureSource.PPU;
Vector2Int textureSize = new Vector2Int(textureSource.Texture.width, textureSource.Texture.height);
if (rects != null) rects.Clear();
List colls = new List(gameObject.GetComponents());
rects = new List();
QuadTreeToRect(pixelData, 0, 0, textureSize.x, textureSize.y);
foreach (BoxCollider2D b in colls)
{
b.enabled = false;
}
foreach (Rect r in rects)
{
Vector2 rColliderOffset = new Vector2(r.x + r.size.x / 2, r.y + r.size.y / 2f);
BoxCollider2D boxC = colls.Find(coll => coll.offset == rColliderOffset && coll.size == r.size);
if (!boxC)
{
AddComponentAsync(rColliderOffset,r.size);
}
else
{
boxC.enabled = true;
}
}
foreach (BoxCollider2D b in colls)
{
if (b.enabled == false)
{
CounterTime.Time += Time.deltaTime * 100;
Destroy(b, CounterTime.Time);
}
}
}