No C #, existem dois tipos de tipos, aproximadamente: tipos de valor e tipos de referência .
Você usa newquando cria os dois, mas os tipos de valor são criados na pilha (na maioria das vezes) e apenas os tipos de referência são criados no heap. Uma vez criados, os tipos de referência permanecem até o coletor de lixo, determinam que não são mais necessários e os coletam. Instâncias na pilha são destruídas eficientemente quando o quadro da pilha desaparece (quando a função em que foram criadas termina).
Vector3é um tipo de valor no Unity, portanto, quase todas as instâncias que você cria serão armazenadas na pilha e, portanto, baratas para criar e destruir. Então você provavelmente não está fazendo nada de errado aqui. Certamente não cria um vazamento de memória e quase certamente não será um problema de desempenho (você gostaria de criar um perfil para ter certeza, de qualquer maneira).
Criar muitos tipos de referência novos a cada quadro pode ser problemático, pois isso pode induzir o coletor de lixo a ser executado com mais frequência, causando problemas, uma vez que interrompe todos os seus threads para fazer seu trabalho. Mas tipos de valor como Vector3são uma aposta bastante segura.