Здесь есть много возможных решений, поэтому я расскажу о нескольких, которые приходят на ум.
Прежде всего, поиск со строками - это одна вещь, которую, я думаю, большинство разработчиков назвали бы объективно плохой. Если оставить в стороне проблемы, связанные с кейсами и культурой, для сравнения, то вы или другой член команды невероятно легко можете сделать опечатку, чтобы позже изменить имя этого объекта, не забывая, что эти поиски зависят от него, и при использовании в нетривиальных случаях, Есть серьезные проблемы с производительностью. Это особенно верно для Unity, которая будет просто перебирать иерархию, пока не найдет соответствующий объект, по существу для всех вызовов find.
Что-то подобное должно было произойти, если ваш инстанцирующий вызов не удался.
В какой-то момент вы, вероятно, захотите изучить пул объектов , но давайте продолжим вызовы инстанцирования.
Чтобы обойти поиск строк, вы можете сделать снаряд переменной.
public Transform projectile;
Это позволит вам назначить его в инспекторе. Вероятно, никакие другие сценарии не должны иметь доступа к этой переменной, поэтому для получения бонусных баллов вы можете использовать атрибут SerializeField для сериализации частной переменной и назначить ее в инспекторе.
[SerializeField] private Transform projectile;
После этого у вас будет немедленный доступ к снаряду без каких-либо накладных расходов на поиск и без беспокойства о нарушении поисков.
Ваша философия дизайна, несомненно, сильно изменится по мере вашего прогресса, и я бы сказал, что вам не следует связывать какие-либо данные такого рода с логическими классами (на всякий случай, если кто-то упоминает об этом), но я бы сказал, Это хороший шаг в правильном направлении, чтобы начать с изменения структуры поиска.