В моей игре игроки смогут выбирать единицы из меню, которые впоследствии будут использоваться (размещаться) в разных сценах.Сохраните сборные файлы в массиве
Для этого я хочу сохранить сборные блоки в статическом массиве с помощью кода.
Затем я хочу получить доступ к этим сборникам, чтобы отобразить некоторые из их переменных, объявленных в прикрепленных сценариях (например, имя, мощность и текстура эскизов) для отображения в пользовательском интерфейсе. Позже я хочу создать их в сценах.
До сих пор я не смог сохранить эти сборники в массиве.
Мой код:
//save to array
if (GUI.Button(Rect(h_center-30,v_center-30,50,50), "Ship A")){
arr.Push (Resources.Load("Custom/Prefabs/Ship_Fighter") as GameObject);
}
//display on UI
GUI.Label (Rect (10, 10, 80, 20), arr[i].name.ToString());
Из последней строки, я получаю эту ошибку:
<i>" 'name' is not a member of 'Object'. "</i>
Так, где моя ошибка? Забыл ли я что-то или объявил это неправильно, или мой подход здесь недействителен для начала (т. Е. Prefabs не могут быть сохранены/доступны таким образом, другой тип списка лучше подходит для этой задачи).
Во-первых, спасибо за быстрый ответ. Во-вторых: Я использую UnityJS, а не C#. Следовательно, я использовал массив JS, который не имеет объявленного типа (я безуспешно искал способ его определения).
Итак, чтобы получить определенный тип, я переключился на общий список, который, по крайней мере, не вызывает ошибок в редакторе.
Однако, когда я запускаю сцену и нажимаю кнопку, игровой объект, добавленный в список, пуст, что приводит к ошибке, когда скрипт пытается получить доступ к его имени.
Так что, по-видимому, способ сохранения сборника в списке не работает. Где я иду не так? – Tuxedomask
@ user3802640 Тег 'C#' путал меня. В любом случае ошибка связана с тем, что вы пытаетесь получить доступ к свойству 'name' класса' Object' (который не имеет этого свойства). Приведение элемента массива в 'GameObject' должно решить вашу проблему. – redent84
Что мне теперь делать: ** Вставка ** \t 'arr.Add (Resources.Load ("Пользовательский/Prefabs/Ship_Fighter.prefab"), как GameObject);' ** Чтение: ** 'GUI.Label (Rect (10, 10, 80, 20), (arr [i] как GameObject) .name.ToString()); ' Тем не менее, созданный игровой объект остается пустым, и я получаю эту ошибку: _" Ссылка на объект не установлена экземпляр объекта "_ Однако, когда я перетаскиваю сборку в пустой игровой объект в инспекторе, имя отображается как предназначено. Я думаю, что что-то не так с тем, как я позволяю единству читать сборник. – Tuxedomask