Я хотел бы добавить больше ответа.Если вы хотите добавить и удалить одну за другой лучшую структуру данных для использования, это очередь.
Queue<GameObject> Capsules;
void Start()
{
Capsules = new Queue<GameObject>();
}
private void createObject()
{
GameObject caps = GameObject.CreatePrimitive(PrimitiveType.Capsule);
Capsules.Enqueue(caps);
}
public void destroyObject()
{
if(Capsules.Count > 0)
Destroy(Capsules.Dequeue());
}
Очередь структура данных выдаст первый вошел в очередь.Таким образом, он выдаст первый игровой объект, который вы добавили в очередь во время выполнения, и вам не понадобится переменная для управления индексом, как в состоянии List.
Примечание. Это решение все еще очень простое, ноЯ бы порекомендовал вам использовать объектный пул вместо создания и уничтожения объектов во время выполнения, поскольку создание и удаление объектов довольно интенсивно во время выполнения.Так что вам следует, если только в этом нет крайней необходимости, избегать создания и удаления.
Queue<GameObject> pooledObjects;
Queue<GameObject> Capsules;
void Start()
{
pooledObjects = new Queue<GameObject>();
Capsules = new Queue<GameObject>();
}
private void createObject()
{
if(pooledObjects.Count > 0)
{
GameObject fetchedObject = pooledObjects.Dequeue();
fetchedObject.SetActive(true);
//Do translations,scaling or other stuff on this reference
//Add it back to main list of things present in scene.
Capsules.Enqueue(fetchedObject);
} else
{
//Only create objects if necessary
GameObject caps = GameObject.CreatePrimitive(PrimitiveType.Capsule);
Capsules.Enqueue(caps);
}
}
public void destroyObject()
{
//here instead of destorying the object we will just disable them and keep them out if scene so we dont have to recreate them everytime
if(Capsules.Count > 0)
{
GameObject fetchedObject = Capsules.Dequeue();
fetchedObject.SetActive(false);//Turn the object off from scene
pooledObjects.Equals(fetchedObject);
}
}
Вот список поддерживаемых структур данных в C #, которые вы можете использовать в зависимости от вашего необходимого случая.