@Just_Graf

Какие есть способы взаимодействия между классами/объектами C# Unity?

Про методы "GetComponent", о способе передачи объектов публичным полям или полям с атрибутом "SerializeField" через инспектор, знаю. Что мне хотелось бы узнать, вот есть класс, который прикреплен к одному из объектов на сцене, на сцене имеется множество других объектов, как через тот класс обратиться к любому из объектов на сцене? Вообще, какие есть способы?
  • Вопрос задан
  • 280 просмотров
Решения вопроса 1
@Ksushqa
Unity developer
А зачем вам обращаться из класса к любому объекту на сцене? Этот вопрос сразу видится некорректным, потому что я с трудом представляю такие ситуации, когда ОДИН класс должен иметь связь со ВСЕМИ объектами. Эти объекты ВСЕ однотипны?

Я навскидку вижу два пути.
1. Если вам нужно, чтобы одинаковый код отрабатывал для нескольких геймобжектов, например, когда те появляются на сцене (это могут быть разные моменты), то можно повесить один и тот же скрипит на все необходимые GO. Скрипт будет обращаться к GO, на котором висит и будет что-то там изменять или контролировать. Чаще всего, это что-то поведенческое. Поведение моба, эффекта и т.д.
2. У вас будет некий контроллер со списком объектов, которые он контролирует. И контроллер, получая информацию от системы, будет решать, какой объект и что должен делать ("убить", поставить на паузу, заспавнить что-то и т.д.).

В качестве дополнения. Если вам нужен некий контроллер, который должен быть доступен из разных участков проекта, то его делают синглтоном, как вариант. Этот контроллер занят важными делами, например, контролирует состояние игры (playing, pause, starting и т.д.) и переключает его. И у него другие скрипты могут уточнить, а что там вообще у нас? Пауза? А, ну тогда я не буду спавнить свои эффекты/делать другие локальные штуки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы