Как оказалось, функции Instantiate и Destroy довольно затратные, поэтому, если в вашей игре порождается и уничтожается множество объектов, то используйте pool объектов.
Необходимое количество объектов генерируется при запуске игры и в нужный момент, отображается на сцене. Вместо того чтобы уничтожать объект, отключаете его поведение, либо просто меняете значение свойства active на false. Данный подход значительно ускоряет игру.
Также для повышения производительности рекомендуется использовать вместо Update так называемые Coroutines. Просто создаете функцию возвращающую IEnumerator (в C#), в которой располагается цикл, каждая итерация которого выполняется через определенные промежутки времени, которые можно задать написав yield return new WaitForSeconds(1.0f). Если пауза достаточно велика, то действия описанные в цикле будут выполняться реже, тем самым сберегая процессорное время.
Необходимое количество объектов генерируется при запуске игры и в нужный момент, отображается на сцене. Вместо того чтобы уничтожать объект, отключаете его поведение, либо просто меняете значение свойства active на false. Данный подход значительно ускоряет игру.
Также для повышения производительности рекомендуется использовать вместо Update так называемые Coroutines. Просто создаете функцию возвращающую IEnumerator (в C#), в которой располагается цикл, каждая итерация которого выполняется через определенные промежутки времени, которые можно задать написав yield return new WaitForSeconds(1.0f). Если пауза достаточно велика, то действия описанные в цикле будут выполняться реже, тем самым сберегая процессорное время.