|
2 / 2 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
||||||
Система событий24.10.2021, 01:09. Показов 2356. Ответов 13
Привет! Помогите любителю.
У меня есть статичный класс, в который я записываю все события в сцене.
0
|
||||||
| 24.10.2021, 01:09 | |
|
Ответы с готовыми решениями:
13
Система событий Система событий PhysX. Передать информацию о столкновении |
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
||||||
| 24.10.2021, 03:39 | ||||||
0
|
||||||
|
2 / 2 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
|
| 24.10.2021, 11:50 [ТС] | |
|
Не совсем понял для чего создавать класс. Я и так могу передавать любые параметры. Проблема в том что я вызываю событие в которые передаю параметры, допустим 3. Но эти параметры не всем нужны, кому-то нужно просто это же событие, но он не будет ничего делать с параметрами.
0
|
|
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
|
| 24.10.2021, 12:12 | |
|
Blascovich, событию должно быть всё равно кто на него подписан. Задача события - оповестить всех подписчиков и передать все необходимые параметры (если они есть), которые как-то связаны с этим событием.
Ваши объекты на сцене просто подписываются на нужные события и всё. Если им нужны какие-то данные из параметров события, то они ими пользуются. Я так и не понял для чего вы создаёте классы public class Event и public class Event<T>, причём в которых происходит двойная подписка...Ведь есть уже готовые делегаты ( Action, Func) и тип event.
0
|
|
|
2 / 2 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
|
| 24.10.2021, 12:56 [ТС] | |
|
тут 2 класса Event, в одном я передаю параметры через делегат Action, в другом нет
Добавлено через 2 минуты в каком месте происходит двойная подписка?
0
|
|
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
|
| 24.10.2021, 13:12 | |
|
0
|
|
|
2 / 2 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
|
| 24.10.2021, 13:38 [ТС] | |
|
спасибо, не увидел.
Но я так и не понял как быть в моём случае с параметрами?)
0
|
|
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
|||||||
| 24.10.2021, 13:58 | |||||||
|
Я не знаю, зачем вам все события в одном месте и будет ли это удобно. Но если что, то события можно создать просто:
0
|
|||||||
|
2 / 2 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
|
| 24.10.2021, 14:09 [ТС] | |
|
Например открылась коробочка. В ней лежит предмет.
Я создаю Action с параметрами (GameObject Box, string itemName) Есть класс со списком, в который я заношу все открывавшиеся игроком коробки в сцене. Ему нужен только параметр GameObject Box. Также есть класс игрока, которому нужен параметр itemName. Но естественно, если я подписываю методы классов на этот Action, то нужно указывать 2 параметра. Собственно вопрос и состоял в том, как мне не плодить кучу одних и тех же событий с разными параметрами для разных классов, а создать одно событие, из которого подписчики возьмут нужный для себя параметр. Возможна ли такая реализация?
0
|
|
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
|
| 24.10.2021, 14:35 | |
|
Так здесь нет никаких проблем, каждый подписчик берёт только нужную ему информацию передаваемую с событием.
Подписки на конкретное событие выглядит у всех объектов одинаково, но никто ведь не заставляет подписчика вообще трогать параметры из этого события... даже если их там целая куча. Коробочка открылась, создала своё событие с параметрами и всё. Пусть игрок подписывается на это событие и делает всё что угодно при его возникновении. Если ему нужны данные из события, то пусть ими пользуется, а если ему ничего не надо, то пусть и не пользуется. В чём загвоздка?
0
|
|
|
3362 / 1775 / 1028
Регистрация: 26.10.2018
Сообщений: 5,204
|
|
| 24.10.2021, 14:37 | |
|
Могу еще раз продублировать своё сообщение. Ты или делаешь 3 разных ивента (что тупо), либо упаковываешь параметры в бокс, коробку, обертку, называй как хочешь. А в методах используешь лишь те параметры, которые тебе нужны. Сесть на 2 стула одновременно не получится, как бы того не хотелось.
0
|
|
|
2 / 2 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
|
| 24.10.2021, 14:48 [ТС] | |
|
Может я что-то не понимаю, но когда я подписываю метод обработки события, то я не могу использовать только один из параметров, сигнатура события меня вынуждает обрабатывать 2 параметра.
То есть у игрока метод CheckBox() подписан на событие OnBoxOpen(GameObject Box, itemName). И в этом методе CheckBox() я должен обработать оба параметра, то есть CheckBox(GameObject Box, itemName), хотя ему нужен только itemName. Добавлено через 1 минуту 1Max1, спасибо за ответ, но я не совсем понял реализацию. Можешь более развёрнуто написать на примере одного события?
0
|
|
|
2639 / 1567 / 853
Регистрация: 23.02.2019
Сообщений: 3,876
|
||||||||||||
| 24.10.2021, 15:32 | ||||||||||||
Сообщение было отмечено Blascovich как решение
РешениеНо никто не вынуждает вас использовать эти параметры. Вы просто создаёте нужную сигнатуру метода и всё. Допустим у вас существует событие открытия коробочки
Здесь игрок делает подписку на это событие и просто выводит сообщение в консоль. Но может и ничего не делать, вообще ничего.
0
|
||||||||||||
|
2 / 2 / 0
Регистрация: 14.11.2019
Сообщений: 46
|
|
| 24.10.2021, 16:49 [ТС] | |
|
блин, всё так просто...от души!)
1
|
|
| 24.10.2021, 16:49 | |
|
Помогаю со студенческими работами здесь
14
В Журнале событий есть строка с Уровень: Критический, в Общие:"Система перезагрузилась, не завершив полностью работу Сгенерировать 30 случайных событий с интенсивностью 10 событий в час с помощью мастера функций
Суммой двух событий А и В называется событие С, состоящее…1) в наступлении хотя бы одного из событий А и В2 Произведением двух событий А и В называется событие С, состоящее…1) в наступлении хотя бы одного из событий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|