Godot путь новичка. MainMenu
Всем привет, сначала переживал что напишу никому ненужную хрень, теперь переживаю, что напишу нужную, но хреново. Буду следовать правилу Антона Палыча, под номером 8.
"Стать писателем очень нетрудно. Нет того урода, который не нашел бы себе пары, и нет той чепухи, которая не нашла бы себе подходящего читателя. А посему не робей…"
Вот и муза мне моя говорит, чтобы я не переживал так сильно, а посему не будем робеть и продолжим.
В этой части сделаем главное меню и познакомимся с двумя важнейшими и ключевыми элементами любой игры. Это текстовое поле(Label) и кнопочка(Button). В принципе без них не обходится почти ни одна игра, если от текстов ещё можно отказаться, в пользу картинок, то с кнопочками сложнее. Да и без текстовых полей, это тоже будет какой-то экспериментальный артхаус, хотя бы цены на внутриигровые покупки надо же куда-то писать. Без кнопок тоже сложно. Гипотетически можно представить, какой-то VR-раннер, где управление идет полностью за счет гироскопа, но без кнопки выход это все равно как-то не гуманно.
Ну и поскольку хочется делать максимально просто, усложнять тоже ничего не буду, кнопок будет много, даже первый противник как увидите в последствии, у нас будет тоже кнопкой только с текстуркой(TextureButton) А сейчас создадим новую сцену и назовем её MainMenu
И так новую сцену создали, теперь наделаем на ней кнопок.
Кнопку на экране, переименовываем, перетаскиваем куда хочется, подписываем.
добавляем вторую кнопку
Таким же образом добавляем на сцену тексты(Label) не буду делать скриншоты, добавляем самостоятельно, немножко когнитивной нагрузки лучше добавлю вам)
В результате должна получится примерно следующая картинка.
Если структура дерева у вас получилась примерно такого плана, что возможно, то не переживайте перетаскивайте все на синенький кружок. Это не страшно и влияет на отображение потомков, в случае как на картинке если будем на экране сейчас перетаскивать NewGameBtn, то QuitBTN и название игры будут ездить вместе с ним по экрану.
Так же местоположение в дереве влияет и на отображение на экране, картинка для наглядности,
NewGameBTN перекрывает кнопку выхода, если поднять его повыше в дереве, то его будет перекрывать уже QuitBTN. Попробуйте сами. Это будем ещё детально разбирать, когда добавим первые спецэффекты, чтобы тело персонажа не перекрывало взрывы например.
Объемно получается, ничего скоро закончим, в целом сейчас уже можно запустить сцену, на кнопочки понажимать, происходить ничего не будет, но сейчас это исправим.
Текста в редакторе мы уже меняли, попробуем изменить название игры посредством кода.
К любому объекту на сцене, можно обратиться если написать его название начинающееся со знака доллара $, я предпочитаю добавлять к именам объектов их базовый тип, типа BTN или LBL, вот как раз для этого чтобы не держать много лишнего в голове и в списке проще было ориентироваться, в редакторе то и так удобно видно иконочки.
Если ошибок не было то при запуске название игры поменяется на то, что вы написали в кавычках. Собственно в кавычках это базовый тип данных String - строка, познакомимся ещё с одним базовым типом данных это Boolean, логические тип, принимает True или False, истинно и ложно соответственно. Поскольку игры у нас ещё нету и кнопка New Game ничего не начинает, не стоит вводить пользователя в заблуждение и просто задизейблим её.
$NewGameBTN.disabled = true
disabled это одно из свойств кнопок, по аналогии с текстом.
К слову у кнопки тоже есть свойство text и его так же можно поменять.
$NewGameBTN.text = work in progress'
Многовато получилось текста и картинок что-то, да и время час ночи, на работу скоро.
Так что обработчик событий для кнопок, будет уже в следующем посте. В качестве задания для закрепления, рекомендую вам самостоятельно задизейблить кнопку выхода. Это важный пунктик, в игре не должно быть элементов, которые работают не так, как от них ожидают. Они приносят негативные эмоции, представляйте себя на месте игрока всегда. У него есть кнопка, она по всем признакам работает, он ведет к ней курсор, кликает и.. ничего не происходит. В голове сразу одна мысль - разрабы, косорукие дебилы, ничего нормально сделать не могут, все через жопу, почему я жму, а ничего не жмется. Дизлайк, отписка, 1 звезда вам в сторе и проклятие до седьмого колена. Так что лучше убирать неработающие элементы и не травмировать нежную психику требовательных игроков. Ведь если бы она была задизейблена, то он сам бы допенькал закрыть игру крестиком.
Если вы добрались до сюда, то спасибо огромное за внимание, вопросы и пожелания по улучшению будут очень кстати.
Лига Разработчиков Видеоигр
8.5K постов23.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"