Проекты
GameDev.ru / Проекты / Форум / Battlecruiser (2 стр)

Battlecruiser (2 стр)

Поделиться

Страницы: 1 2 3 4 5 Следующая

LeopotamПостоялецwww18 окт. 201714:12#15
pixeye, по поводу "как эффективно, дерзко и молодежно" создавать новые сцены - это зависит от реализации инстанцирования динамики в коде и от статичного левел дизайна. Я предпочитаю вместо единого updatemanager-а - специализированные подсистемы (uimanager, unitmanager, battlefieldmanager, etc), реализующие в себе динамические пулы, а всю их динамику инстанцировать как дочерние объекты к самим менеджерам. В случае ленивой инициализации этих менеджеров каждый из них будет отдельным GameObject-ом со своим дочерним списком зависимых объектов и хорошо впишется в общую иерархию сцены без лишней вложенности.
ILПостоялецwww18 окт. 201714:14#16
greencrazycat
> может реально выстрелить в ногу когда от него не ждешь
Кстати, насчет вот этого хотел вставить 5 копеек.
+ Показать
LeopotamПостоялецwww18 окт. 201714:16#17
Например, случилось что-то плохое, и экземпляр удалился со сцены.

А не должно быть таких ситуаций, по сути это нарушение работы общей логики программы и нужно кидать исключение и валить ее / обрабатывать как-то (рестартовать уровень, например).


Есть один кейс - это попытка потрогать синглтон с ленивой инициализацией в OnDestroy / OnDisable другого объекта в момент смены выгрузки сцены - раньше просто пробивало песочницу, теперь юнити орет, что что-то пошло не так, попытка инстанцирования после разрушения. Поэтому нужен механизм для проверки - а существует ли еще инстанс синглтона без его форсированного пересоздания. Почему? Потому что порядок вызова колбеков очистки для GameObject-ов в сцене не определен и синглтон уже может быть убит.
Я сделал так:

+ Показать

И более реалистичный пример:
+ Показать

Правка: 18 окт. 2017 14:25

pixeyeУчастникwww18 окт. 201714:47#18
Leopotam
> pixeye, по поводу "как эффективно, дерзко и молодежно" создавать новые сцены -
> это зависит от реализации инстанцирования динамики в коде и от статичного левел
> дизайна. Я предпочитаю вместо единого updatemanager-а - специализированные
> подсистемы (uimanager, unitmanager, battlefieldmanager, etc), реализующие в
> себе динамические пулы, а всю их динамику инстанцировать как дочерние объекты к
> самим менеджерам. В случае ленивой инициализации этих менеджеров каждый из них
> будет отдельным GameObject-ом со своим дочерним списком зависимых объектов и
> хорошо впишется в общую иерархию сцены без лишней вложенности.

Согласен, что это индивидуально. В общем-то чем мне нравится программирование игр в частности так это возможностью решить одну задачу разными путями:)
Что до поддержки 4.6 - я не рекомендую, а говорю, что такая возможность есть. В самом редакторе это даже помечено как experemental. Это реально дело выбора каждого как и последствия. Кстати о них, спасибо, что описал 

AIIIBAPПостоялецwww18 окт. 201716:31#19
pixeye
Знаю, сам терпеть не могу : )
Новый юнити  работает с более свежими версиями языка C# - Провеку на нулл можно делать так:

У меня просто весь код был написан на проверках на null, при обращении к любому объекту я проверял, не нулевой ли он и т.д.
Сам подход дурацкий.
Сейчас, когда связываю пару объектов, делаю либо так, чтобы при удалении объект вначале всем сообщал об этом (а у него есть прямые указатели для этого), либо вообще захожу через ID объекта, а не по прямой ссылке. Тут лучше организационными мерами это обходить.
Вся фигня в том, что во всех учебных курсах эти редиски делают проверки на нулл, и если null, то генерят объект. Сволочи одним словом. Говнокоду учат.
UncleMikeПостоялецwww19 окт. 20170:00#20
pixeye
по созданию новой сцены - не проще ли сделать тупо заготовку в виде префаба?
LeopotamПостоялецwww19 окт. 20170:02#21
UncleMike, тут смысл в абсолютной ленивости программиста - он тычет File / New Scene и новая сцена уже содержит нужную иерархию без дополнительного перетаскивания префаба в сцену. А так разницы нет.
UncleMikeПостоялецwww19 окт. 20170:14#22
Тут нужно рассмотреть два варианта - если в игре будет только одна подобная сцена, то по любому надо импортировать этот скрипт в проект. Ну и перетащить префаб на сцену - тоже пара секунд. Если же надо много таких сцен, то просто сделать такую сцену как шаблон и потом СОХРАНЯТЬ ЕЕ КАК....  В общем как мне кажется польза от заморочек с такими скриптами стремиться к нулю...)
pixeyeУчастникwww19 окт. 20175:14#23
UncleMike
> Тут нужно рассмотреть два варианта - если в игре будет только одна подобная
> сцена, то по любому надо импортировать этот скрипт в проект. Ну и перетащить
> префаб на сцену - тоже пара секунд. Если же надо много таких сцен, то просто
> сделать такую сцену как шаблон и потом СОХРАНЯТЬ ЕЕ КАК....  В общем как мне
> кажется польза от заморочек с такими скриптами стремиться к нулю...)

1) Заморочек особо нет. Это 30-40 строчек кода. Лучший код - ненаписанный код, но мне 1 описательный скрипт нравится больше префаба.
Создавать сцену через  File / New Scene естественно. Никогда не забуду.

2) Юнити позволяет делать очень гибкую настройку всего. Cвою задачу я вижу в том, чтобы показать людям что такая возможность существует. Например в юнити 5.0 таких штук еще не было. Как это использовать - вопрос фантазии.
Сам я не сторонник "ручного" труда в 21 веке. Мне даже лень на компе папку downloads чистить. Как бабке жалко удалять хлам, вдруг пригодится. Поэтому написал батч скрипт который чистит мой комп раз в неделю по пятницам. В это время я смотрю и плачу.

3) Я не импортирую скрипты/префабы в проект сам. У меня есть базовый инструментарий который переходит из проекта в проект. Он летает в облаке и загружается в новый проект когда я спускаюсь на землю работать.
Мне хочется чтобы юнити писал за меня игру сам, но не знаю как писать нейросети.

4) Степень моей лени в гифке ниже :)
Изображение

Правка: 19 окт. 2017 9:48

pixeyeУчастникwww20 окт. 201716:09#24
Первая часть по шаблону Object Pool : )

LeopotamПостоялецwww20 окт. 201717:28#25
pixeye, немножко пописал там в комментах. Ждем второй части :)
pixeyeУчастникwww20 окт. 201717:38#26
Leopotam
Спасибо, про боксинг в след части поправлю :)
SecretSemПостоялецwww20 окт. 201720:38#27
классная идея, если смогу чем помочь - пиши!
pixeyeУчастникwww22 окт. 20170:08#28
SecretSem Спасибо! Если ты разбираешься в шейдерах можешь уже начинать помогать XDD

Вторая часть про object pool!

LeopotamПостоялецwww22 окт. 20173:48#29
pixeye, я там опять фигни всякой понаписал в комментах, сорри. :) Что за помощь нужна с шейдерами?

Страницы: 1 2 3 4 5 Следующая

/ Форум / Проекты / Оцените

2001—2017 © GameDev.ru — Разработка игр