Я хочу создать игру в Unity C #, в которой игрок будет добавлять столько дронов, сколько ему нужно, в качестве игровых объектов в игровой мир. Поэтому я сделал префаб дронов, а позже во время выполнения я спрашиваю количество дронов, которые игрок хочет иметь (например, n чисел), и создаю их префаб n раз.
Скрипт, который прикреплен к префабу дронов, называется drone_script.
Поэтому у меня есть класс drone_script в качестве общего класса. Этот класс имеет атрибут (назовем его подписчиком), который должен иметь разные уникальные значения для каждого дрона. Таким образом, он создается как нулевая ссылка в общем классе drone_script, и позже во время выполнения я его инициализирую.
Во время выполнения я создаю n (те же номера, что и у игровых объектов дронов) из этого класса и назначаю их атрибуту подписчика разные значения.
Вот как это выглядит:
some_class
{
for (int i = 0; i < number_of_Drones; ++i)
{
drones_script[i] = new drone_script();
\\ here I am creating n objects of my general drone_script class
drones_script[i].drone_subscriber = a unique value;
\\ here I am assigning to each of the drone objects' drone_subscriber attribute a different value.
drco = new Vector3((float)0, (float)1, (float)0);
drones[i] = Instantiate(Resources.Load("drone"), drco,
Quaternion.Euler(-90, 0, 90)) as GameObject;
\\I instatiate the drone prefab in unity game world here.
}
}
drone_script
{
public ROSBridgeSubscriber drone_subscriber;
void Start() { \\some code }
void FixedUpdate () { \\some code }
}
Моя проблема в том, что когда объекты игры дронов создаются в единстве, к ним присоединяется общий класс drone_script, и поэтому их атрибут подписчика равен нулю. Однако мне нужно, чтобы объект drone_script [i] был назначен им как их сценарий, а не сам общий drone_script. Потому что только тогда каждый игровой объект дрон имеет соответствующее значение атрибута подписчика еще до вызова функции запуска.
Я правильно думаю?
Если да, как я могу это сделать?