Как получить доступ к свойствам скрипта при его добавлении в экземпляр объекта и установить Transform in Code - PullRequest
0 голосов
/ 07 июня 2018

У меня есть часть моего скрипта, которая создает объекты с помощью цикла For:

C #

 enemyDragons2[i] = (Game Object) Instantiate(enemyDragonStandIn, 
 PlaceToSpawn -Vector3.forward  * 20.4f, Quaternion.identity);

Я присоединяю скрипт, выполняя это:

 enemyDragons2[i].AddComponent<SeekChase>(); 

Скрипт действительно присоединяется, но мой скрипт SeekChase принимает преобразование, которое я обычно перетаскиваю в инспектор.

Where I would drag a Transform into the Enemy slot in the Unity inspector.

.... Но я быЯ хотел бы сделать это по сценарию.

Я знаю, что должен был бы сделать это:

 enemyDragons2[i].Get Component<SeekChase>().....properties.Name=..set...;  

Я посмотрел здесь :( и подумал, что это были решения):

Динамическое добавление сценария к игровому объекту и присвоение значений его свойствам

и здесь:

https://answers.unity.com/questions/225030/instantiate-a-prefab-and-initialise-some-of-its-pr.html

Я знаю, что яЯ могу жестко закодировать Transform, вставив его в скрипт SeekChase или прикрепив скрипт SeekChase к префабу, добавив Transform, добавленный вручную в инспекторе, но я хотел бы сделать это с помощью кода, чтобы сделать вещи более динамичными.(так что я могу использовать один и тот же сценарий для разных врагов, изменяя Transform).

Как мне попасть внутрь сценария SeekChase, когда он добавляется в экземпляр объекта, и установить для Transform тот, который я хочу вкод?

Любая помощь будет оценена.

Спасибо.

1 Ответ

0 голосов
/ 07 июня 2018

У вас есть переменная типа Transform с именем enemy, и вы хотите инициализировать эту переменную enemy преобразованием GameObject в сцене с именем «Enemy».

На скриншотеи комментарии, вот что вы должны сделать:

Найти врага

GameObject yourEnemy = GameObject.Find("Enemy");

Установить преобразование переменной врага в скрипте SeekChase

enemyDragons2[i].GetComponent<SeekChase>().enemy = yourEnemy.transform;

с другими вашими кодами, это должно выглядеть как удар:

//Instantiate prefab
enemyDragons2[i] = (GameObject)Instantiate(enemyDragonStandIn,
PlaceToSpawn - Vector3.forward * 20.4f, Quaternion.identity);

//Attach script
enemyDragons2[i].AddComponent<SeekChase>();

//Find the Enemy
GameObject yourEnemy = GameObject.Find("Enemy");

//Set the enemy
enemyDragons2[i].GetComponent<SeekChase>().enemy = yourEnemy.transform;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...