У меня есть некий скрипт Respawn.cs, у которого есть логическая переменная isActivated. На сцене есть много объектов, у которых есть этот скрипт. Так вот, мне нужно изменить переменную isActivated сразу во всех объектах, то есть чтобы значение переменной поменялось везде, где есть скрипт. Как можно это сделать?
1 вариант: Воспользоваться методом FindObjectsOfType, чтобы найти все объекты с компонентом Respawn
, а потом в цикле у них поменять значение.
2 вариант: Для таких целей придумали события (events). Почитайте о них. Про подписчиков и слушателей. Суть в том, что объект подписывается на некое событие и когда оно происходит, то "услышав" его - объект делает некое действие. Например в какой-то момент вам нужно будет отослать событие ActivateAll
и, соответственно, все объекты, кто был подписан на него поменяют сами свои значения у isActivated
(пример видео с событиями https://unity3d.com/ru/learn/tutorials/topics/scripting/events)
(книги по Unity https://ru.stackoverflow.com/a/609901/191482)
1) Как уже говорили - использовать события. 2) Использовать public static переменную в скрипте (можно статические переменные вынести в отдельный static класс). MyStatic.myBool=true; И проверку условия в скрипте. Не к данному случаю а вообще про доступ к переменным другого класса: 3) Сделать public свойство (или, что менее предпочтительно, public поле)
YourScript a;
a = GameObject.GetComponent<YourScript>();
a.MyBool=true;
Могу предложить вот такой вариант. Создайте менеджер для всех объектов которые могут респавниться.
В менеджере держите все созданные объекты. Таким образом можно будет предотвратить частый вызов (или вызов в принципе) довольно затратной операции FindObjectsOfType, ну и в будущем работать с общей коллекцией объектов будет проще.
Если вы не совсем понимаете, то менеджер это по сути еще один скрипт, вешайте его на пустой объект (думаю у вас есть такой, для скриптов логики игры). В менеджере держите массив ссылок на объекты со скриптом respawn. При необходимости изменения всего массива, достаточно будет лишь пройтись по этому существующему списку.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Как сделать UPDATE поля где id = 1 вставив в одно из полей значение из 2 таблицы где id = 5
Новичок студент-программист,столкнулась с такой проблемой, в VC ошибку не выдает, до этого запускалась и все было норм, в чем же проблема?
Функция динамически создает localStorageКлюч каждый раз создается при помощи даты