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);
}