Size: a a a

Unity Floodилка

2020 December 09

W

WellMOR in Unity Floodилка
Kseniya Bedenko
У меня есть базовая вьюшка, от которой наследуются остальные. С методом Initialize(T viewModel). Но я хочу чтобы вьюшкины данные еще регались в одном там менеджере
Кто вьюшку создаёт?
источник

KB

Kseniya Bedenko in Unity Floodилка
WellMOR
Кто вьюшку создаёт?
Главная Вьюшка (окно) создаётся такой сущностью как сценарий. Потом вьюшки создают нужные вниз по иерархии внутри себя
источник

KB

Kseniya Bedenko in Unity Floodилка
И у меня есть некоторые сериализуемые поля вьюшек, данные с которых хочу я собрать
источник

KB

Kseniya Bedenko in Unity Floodилка
С каждой вьюшки
источник

KB

Kseniya Bedenko in Unity Floodилка
И есть метод Initialize базовой вьюшки, в который приходит модель данных
источник

W

WellMOR in Unity Floodилка
Ага, и ты хочешь эти поля регнуть в каком-то менеджере, но нужна ссылка, чтобы не делать его синглтоном или сервис-локатором
источник

KB

Kseniya Bedenko in Unity Floodилка
WellMOR
Ага, и ты хочешь эти поля регнуть в каком-то менеджере, но нужна ссылка, чтобы не делать его синглтоном или сервис-локатором
Да
источник

KB

Kseniya Bedenko in Unity Floodилка
Именно
источник

KB

Kseniya Bedenko in Unity Floodилка
Как лучше сделать?
источник

б

бугимейн in Unity Floodилка
ребят, как экспортировать персонажа со спрайта?
источник

W

WellMOR in Unity Floodилка
Kseniya Bedenko
Как лучше сделать?
У тебя получается такая абстрактная ситуация, в которой ты рекурсивно спускаешься вниз, и на каждом уровне необходимо выполнить действия с этим объектом.

Тебе что-то подобное понадобится чаще, чем 1 раз? Или только в этом частном случае?
источник

KB

Kseniya Bedenko in Unity Floodилка
WellMOR
У тебя получается такая абстрактная ситуация, в которой ты рекурсивно спускаешься вниз, и на каждом уровне необходимо выполнить действия с этим объектом.

Тебе что-то подобное понадобится чаще, чем 1 раз? Или только в этом частном случае?
Да, надо иметь возможность на любом уровне (то есть в любой вьюшке) воспользоваться менеджером. Сейчас на появление вьюшки он регает поля в общий список. На удаление — удаляет поля этой вьюшки из общего списка.

Но в любой другой вьюшке мне эти данные могут понадобиться

Если кратко, то я регаю инфу о доступных UI объектах, К которым могут лететь бонусы. А использую так: во вьюшкину модель данных могу добавить ссылку на модуль летающих бонусов. И в любой вьюшке написать что-то типа Fly(энум зареганного UI объекта, точка старта)
источник

KB

Kseniya Bedenko in Unity Floodилка
Не знаю, понятно написала или нет
источник

KB

Kseniya Bedenko in Unity Floodилка
Так что когда вьюшка "открыта", мне надо знать эти зареганные объекты. Т.е. Вьюшка должна о них кому-то сообщить, то есть ей нужна ссылка или типа того
источник

KB

Kseniya Bedenko in Unity Floodилка
В каждую вьюшку добавлять в Initialize ссылку ещё и этого менеджера — это отстой, так как она везде будет по проекту пробрасываться
источник

KB

Kseniya Bedenko in Unity Floodилка
Сейчас у меня сделано через статику.
BaseView на Start колбек получает ссылку на инстанс моего менеджера через статическую обертку
источник

KB

Kseniya Bedenko in Unity Floodилка
Типа статику использую ток для того, чтобы ссылку передать
источник

KB

Kseniya Bedenko in Unity Floodилка
Так как BaseView относится как бы к кору, то я хочу туда вынести регистрацию объектов вьюшки как общий код, чтобы не дублировать его. Но это абстрактный класс соответственно
источник

W

WellMOR in Unity Floodилка
Я тоже думал о статике.
Но, наоборот, чтобы вьюшка, когда рождается оповещала об  этом статическим событием и на неё можно было бы легко подписаться, типа

OnCreate?.Invoke(this);

BaseView.OnCreate += и делай что хочешь с этой вьюшкой.
Но тут есть минусы, статика жеж. Потом, в случае чего, сложно будет клубок распутать, если багу понадобится отследить.
источник

KB

Kseniya Bedenko in Unity Floodилка
WellMOR
Я тоже думал о статике.
Но, наоборот, чтобы вьюшка, когда рождается оповещала об  этом статическим событием и на неё можно было бы легко подписаться, типа

OnCreate?.Invoke(this);

BaseView.OnCreate += и делай что хочешь с этой вьюшкой.
Но тут есть минусы, статика жеж. Потом, в случае чего, сложно будет клубок распутать, если багу понадобится отследить.
Ещё есть вариант как-нибудь обернуть статикой Object.Instantiate конкретно для вьюшек с дополнительным методом, куда можно как раз пробросить эту ссылку/все нужные для кора ссылки
источник