Примерно так должно работать:
var posGo = GameObject.Find("positionwhereobjectspawn");
Instantiate(myPrefab, posGo.transform.position, posGo.transform.rotation);
Одна вещь, которая здесь неэффективна, это GameObject.Find
. Если вы делаете это на каждом спавне, да, это неэффективно. Если вы найдете его один раз и просто поместите его в переменную вашего класса для последующего использования, это эффективно. Вот так:
GameObject posGo;
Start() {
posGo = GameObject.Find("positionwhereobjectspawn");
}
Update() {
if(Input.GetKeyDown(KeyCode.SPACE)) {
Instantiate(myPrefab, posGo.transform.position, posGo.transform.rotation);
}
}
Следующим шагом для повышения эффективности является избавление от Instantiate
и использование пула объектов. Вы заранее создаете игровые объекты, скрываете их и используете при необходимости. Для этого вам нужно объединить объекты Google Unity и использовать один из вариантов.