Лучший способ порождать префаб на другом игровом объекте - PullRequest
0 голосов
/ 01 мая 2019

Я создаю префаб на MotherSpawner gameObject и хочу снова создать этот префаб на positionWhereObjectSpawn gameObject .

То, что я планирую сделать, это получить позицию positionWhereObjectSpawn gameobject , используя GameObject.Find, затем создать эту позицию, но они говорят, что она неэффективна.

Какой эффективный способ сделать это?

enter image description here

Ответы [ 2 ]

1 голос
/ 01 мая 2019

Примерно так должно работать:

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 и использовать один из вариантов.

0 голосов
/ 01 мая 2019

Если это статическое значение, и вы не измените число порождений, которое вы можете сделать, это сделать открытые поля и сохранить преобразование обеих точек, в которых вы хотите создать префаб, просто сделав 2 открытых поля преобразования или, если вы хотите увеличитьколичество порождений, которые вы можете просто сохранить эти позиции в коллекции и использовать их для порождения объектов, и да, Gameobject.Find неэффективен, этот метод просматривает всю вашу иерархию, поэтому подумайте, сколько времени потребуется, чтобы просмотреть все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...