Показать сообщение отдельно
Старый 15.11.2020, 01:06   #176
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 785
Написано 362 полезных сообщений
(для 995 пользователей)
Ответ: Проблемы разработки от EvilOkta

Сообщение от EvilOkta Посмотреть сообщение
Созрел новый вопрос.
Есть лист объектов, который заполняется при старте игры.
public static List<GameObjectWorkPoints = new List<GameObject>(); 
На каждом объекте в сцене висит скрипт TableIsBusy с одним и тем же методом IAmBusy()
Есть событие на которое нужно подписать все эти методы с каждого объекта.
Делегат и событие создано, но никак не могу понять как получить имя метода с объекта в листе, для подписки. Копаю в эту сторону, но дает ошибку - явно не так.
foreach (GameObject WorkPlace in GameLogicInit.WorkPoints)
        {
            
PlaceIsBusy += WorkPlace.GetComponent<TableIsBusy>().GetComponent("IAmBusyNow");
        } 
Как все таки правильно такие штуки делать? Интересует, потому что такие списки могут быть сформированы в рантайме и тогда необходимо получать список методов объектов в листе на ходу.
Нет юнити под рукой, чтобы проверить, но чисто на сишарпе должно сработать что-то вроде:

PlaceIsBusy += WorkPlace.GetComponent<TableIsBusy>().IAmBusy
В подписку ты должен сам метод передать, а не вызов метода, соответственно без скобок ().
Ну и IAmBusy это же метод, а не тип, как ты его через GetComponent получать собрался?
И конечно же сигнатура метода IAmBusy должна подходить под делегат в твоём событии, но это, я думаю, ты и так понимаешь.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
EvilOkta (15.11.2020)