Рубрики
Unity Object Pool Синглтон

Использование пула объектов на примере

Bullet.cs
пуля для префаба Пула

наследуем интерфейс
добавляем свойство типа
так как в инспекторе мы не можем задавать значение свойству, то сделаем отдельную переменную типа, а в свойстве будем возвращать значение этой переменной

public class Bullet:MonoBehaviour, IPooledObject
{
public ObjectPooler.ObjectInfo.ObjectType Type=>type;
[SerializeField]
private ObjectPooler.ObjectInfo.ObjectType type;
}

поведение Bullet останется таким же как было бы без пула объектов
но только в Update
вместо того что бы уничтожать объект вызываем DestroyObject и передаём туда себя

private float lifeTime = 3;
private float currentLifeTime;
private float speed = 10;

public void OnCreate(Vector3 position, Quaternion rotation)
{
transform.position=position;
transform.rotation=rotation;
currentLifeTime=lifeTime;
}

void Update()
{
transform.Translate(Vector3.forward*Time.deltaTime*speed);

if ((currentLifeTime-=Time.deltaTime)<0)
ObjectPooler.Instance.DestroyObject(gameObject);
}

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *