Пятница, 29 Ноября 2024, 14:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Лёгкая Архитектура кода для не программиста
alexsilentДата: Пятница, 02 Ноября 2018, 11:49 | Сообщение # 1
почти ветеран
Сейчас нет на сайте


Задумался о том, что пора приводить свой код в порядок.
А то всегда хаос получается. И узнал интересное слово архитектура, малость погуглил про это,
сам я пишу код методом проб и ошибок, как художник (мазками, лол), а эти сложные штуки старался обходить всегда.

Но каждый раз у меня хаос в коде, например, есть несколько объектов, которые должны запускаться по очереди,
через Awake или Start функцию после загрузки уровня, и если один из объектов раньше запустится, чем другой,
то могут быть баги, в зависимости от разных обстоятельств, очень сложно указывать, какой скрипт должен запускаться раньше других, они всегда хаотично стартуют.

Так вот, как написать самую простейшую архитектуру, где будут учитываться глобальные переменные,
и отдельные важные скрипты будут просыпаться раньше, чем другие?

И чтобы она выглядела просто даже для художника.

PS Пока что у меня такая хаостектура:


Сообщение отредактировал alexsilent - Пятница, 02 Ноября 2018, 13:29
InsaneSystemsДата: Пятница, 02 Ноября 2018, 13:01 | Сообщение # 2
участник
Сейчас нет на сайте
alexsilent, советую книгу Роберт Мартин - Чистый код: создание, анализ и рефакторинг. Она не совсем про архитектуру, но научит писать код более правильно в целом. Написана правда по языку Java, но это не должно вызвать трудностей, он довольно похож на C#, а сама книга написана простым языком и легко читается. К слову, читать целиком и всё не обязательно, некоторые места можно пропустить (например, тестирование и многопоточность, не думаю, что эти моменты вам на данный момент понадобятся, да и там всё-таки больше к Java относится).

По поводу архитектуры. У меня есть мнение, что это одна из тех вещей, которой можно научиться исключительно самому, используя разве что чужие примеры. Материалы по архитектуре кода трудно понять, пока ты сам не начинаешь мыслить в том же ключе, что и автор, а для этого нужно сначала самому начать понимать архитектуру. :)


Сообщение отредактировал InsaneSystems - Пятница, 02 Ноября 2018, 13:42
pixeyeДата: Пятница, 02 Ноября 2018, 14:34 | Сообщение # 3
Red Winter Software
Сейчас нет на сайте
легких архитектур не бывает.

Простейшим решением будет настроить Edit->Project Settings->Script Execution Order


ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю

pixeyeДата: Пятница, 02 Ноября 2018, 14:40 | Сообщение # 4
Red Winter Software
Сейчас нет на сайте
Организация сцен
Вот тут я пишу про организацию сцен у себя ) неважно как я это реализовывал, но этот подход разумен и позволяет тебе предусмотреть настройку объектов в нужном тебе порядке.


ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю

alexsilentДата: Пятница, 02 Ноября 2018, 14:45 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Цитата pixeye ()
Простейшим решением будет настроить Edit->Project Settings->Script Execution Order

забыл написать, это я тоже сделал по крайней мере для 4-5 файлов, я не уверен как это работает и стоит ли добавлять слишком много скриптов сюда, поэтому я туда добавил только самое важное


Сообщение отредактировал alexsilent - Пятница, 02 Ноября 2018, 14:46
InsaneSystemsДата: Пятница, 02 Ноября 2018, 16:25 | Сообщение # 6
участник
Сейчас нет на сайте
Цитата
Простейшим решением будет настроить Edit->Project Settings->Script Execution Order

Вот я, кстати, слегка опасаюсь использования этой функции - про неё легко забыть, как и про все свои настройки там. Я бы предпочёл порядок указать вручную через код или собственный менеджер, который не потеряется.


Сообщение отредактировал InsaneSystems - Пятница, 02 Ноября 2018, 16:25
alexsilentДата: Суббота, 03 Ноября 2018, 12:05 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Мне уже много раз советовали на синглтоны переходить, но такой вопрос:
А синглтон может обрабатывать локальные переменные в функции и есть ли доступ к не статичным переменным?
Потому-что мой код может, и мне очень нужны локальные переменные в функции.
А также мне нужен цикл Update и FixedUpdate прямо в ядре программы,
вот такое у меня основное ядро программы, я только начал переписывать на C#,
ибо до этого я всегда писал только на ЯваСкрипте.


Добавлено (03 Ноября 2018, 12:11)
---------------------------------------------
Цитата pixeye ()
Организация сцен
Вот тут я пишу про организацию сцен у себя ) неважно как я это реализовывал, но этот подход разумен и позволяет тебе предусмотреть настройку объектов в нужном тебе порядке.


pixeye Спасибо, мне очень нравятся твои видео (хотя я в них мало что понимаю, но мне понравилась идея отделения данных от скриптов) и этот фреймворк, но я не совсем уверен, что смогу пользоваться им, ибо мало что понимаю в скриптейбл объектах и синглтонах.

А ещё я пока не изучал новую загрузку сцен, там теперь новый класс, я ещё даже не пытался вникнуть в это,
сегодня завтра буду разбирать, я всегда раньше получал доступ к сцене через Application.loadedLevelName


Сообщение отредактировал alexsilent - Суббота, 03 Ноября 2018, 12:23
InsaneSystemsДата: Суббота, 03 Ноября 2018, 13:45 | Сообщение # 8
участник
Сейчас нет на сайте
Цитата
А синглтон может обрабатывать локальные переменные в функции и есть ли доступ к не статичным переменным?

Синглтон на MonoBehaviour может всё то же самое, что может обычный скрипт. :)
alexsilentДата: Суббота, 03 Ноября 2018, 14:49 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
Цитата InsaneSystems ()
Синглтон на MonoBehaviour может всё то же самое, что может обычный скрипт.

звучит хорошо, если реально так, тогда я попробую понять как оно устроено и переписать свой скрипт под синглтон,
только вроде как синглтону не нужен префаб и не нужно находиться на объекте уровня, но тогда не будет работать Awake,
тогда кто будет запускать этот скрипт?! нужен ещё один начальный скрипт, который будет запускать этот синглтон,
запутаться можно из-за юнити


Сообщение отредактировал alexsilent - Суббота, 03 Ноября 2018, 14:53
InsaneSystemsДата: Суббота, 03 Ноября 2018, 17:24 | Сообщение # 10
участник
Сейчас нет на сайте
alexsilent, да не в чем там запутываться, Awake отлично работает если правильно сделать) Синглтон можно по-разному организовать. Можно такой, который будет на каждой сцене по-новой грузиться сделать. Как обычный скрипт, просто добавить доступ к нему через статичную переменную. Наверное, чуть позже напишу более подробный пример.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг