En C # hay dos tipos de tipos, aproximadamente: tipos de valor y tipos de referencia .
Tu usas new
cuando se crean ambos, pero los tipos de valor se crean en la pila (la mayoría de las veces), y solo los tipos de referencia se crean en el montón. Una vez creados, los tipos de referencia permanecen hasta que aparece el recolector de basura, determinan que ya no son necesarios y los recolecta. Las instancias en la pila se destruyen eficientemente cuando el marco de la pila desaparece (cuando termina la función en la que se crearon).
Vector3
es un tipo de valor en Unity, por lo que casi todas las instancias que crees se almacenarán en la pila y, por lo tanto, son baratas tanto para crear como para destruir. Así que probablemente no estés haciendo nada mal aquí. Ciertamente no crea una pérdida de memoria, y casi seguro que no será un problema de rendimiento (de todos modos, querría tener un perfil seguro).
Crear una gran cantidad de nuevos tipos de referencia en cada cuadro puede ser problemático, ya que puede inducir al recolector de basura a ejecutarse con mayor frecuencia, causando problemas al pausar todos los hilos para hacer su trabajo. Pero los tipos de valor como Vector3
son una apuesta bastante segura.