Код IT
← Каталог

Автоматическое управление памятью — Unity: список activeProjectiles

C# (Unity): Projectile удерживается в List без удаления после OnCollision.

csharp garbage-collectionencyclopedia1 embed URL статья в энциклопедии
C# main.cs
public class ProjectileSpawner : MonoBehaviour
{
    public List<Projectile> activeProjectiles = new List<Projectile>(); // ← статический или долгоживущий контейнер

    void Spawn()
    {
        var p = new Projectile();
        activeProjectiles.Add(p); // добавили
        // ...
    }
}

// В момент столкновения:
void OnCollision()
{
    // this.Destroy(); — не вызвано
    // и не удалено из activeProjectiles!
}
public class ProjectileSpawner : MonoBehaviour
{
    public List<Projectile> activeProjectiles = new List<Projectile>(); // ← статический или долгоживущий контейнер

    void Spawn()
    {
        var p = new Projectile();
        activeProjectiles.Add(p); // добавили
        // ...
    }
}

// В момент столкновения:
void OnCollision()
{
    // this.Destroy(); — не вызвано
    // и не удалено из activeProjectiles!
}