В C # есть два типа типов: грубо говоря, типы значений и ссылочные типы .
Вы используете new
при создании обоих, но типы значений создаются в стеке (большую часть времени), и в куче создаются только ссылочные типы. После создания ссылочные типы сохраняются до тех пор, пока не появится сборщик мусора, определят, что они больше не нужны, и соберут их. Экземпляры в стеке эффективно уничтожаются, когда кадр стека исчезает (когда функция, в которой они были созданы, заканчивается).
Vector3
это тип значения в Unity, поэтому почти все экземпляры, которые вы когда-либо создаете, будут храниться в стеке и, следовательно, будут дешевы как для создания, так и для уничтожения. Таким образом, вы вряд ли делаете что-то не так здесь. Это, конечно, не создает утечку памяти, и почти наверняка это не будет проблемой производительности (во всяком случае, вы захотите профилировать).
Создание большого количества новых ссылочных типов в каждом кадре может быть проблематичным, поскольку это может побудить сборщик мусора работать чаще, вызывая заминки, поскольку он приостанавливает работу всех ваших потоков. Но типы значений, такие как, Vector3
являются довольно безопасной ставкой.