Unity. Уроки. Как добавить в игру промо-коды
Привет, Игроделы-С-Пикабу!
Сегодня хочется написать обучающий пост о том, как можно в игру на Unity добавить систему собственных промо-кодов...
А расскажу на примере тестируемой казуалки "Boomerang Boom Master".
Как и всегда в программировании, это можно реализовать разными способами. Я же рассмотрю вариант, когда список заготовленных промо-кодов и предметов, которые они выдают, реализован в виде статического класса.
Итак, для начала создадим класс "Данные Промо-кода", который будет содержать сам промо-код и набор предметов (словарь):
id - это идентификатор кода, который для активации нужно будет ввести посимвольно с учетом регистра.
prizes - словарь получаемых предметов с сигнатурой <"строковый идентификатор предмета", "целочисленное кол-во предметов">.
Так мы получили описание "одной единицы промо-кода". В сохранении мы будем хранить идентификаторы (id) использованных промо-кодов, что бы избежать многократного их использования одним игроком. А в статичном классе мы будем хранить список всех доступных в игре промо-кодов именно в виде списка с элементами класса BonusCodeData.
Создаем статичный класс со статичным списком. Класс необходим именно статичный для упрощения работы с ним - он будет доступен везде, не нужно инициализировать и не нужно во время игры заполнять список.
Заполним список несколькими промо-кодами.
Здесь (в примере поста) для упрощения идентификаторы предметов "написаны вручную". Однако, в рабочем варианте я указываю константы из статичного класса "ConstantsResource". Это облегчает отладку, если идентификаторы предметов/ресурсов в коде используются неоднократно. А так же это упрощает изменение этих идентификаторов.
На этом подготовка промо-кодов завершена. Теперь переходим к механизму активации этих промо-кодов...
Система следующая: активируем поле ввода, вводим код, если данный код не использовался ранее и содержится в статичном списке, то активируем его.
В нужном месте интерфейса игры размещаем поле ввода TMP_InputField. Если необходимо, настраиваем его вид. Лично я сделал в виде кнопки с надписью, а тот текст, что вводит игрок, не отображаю в поле (типа секретность и всё такое...) - видно только при вводе с виртуальной клавиатуры.
Для этого поля ввода пишем обработчик окончания ввода:
Настраиваем поле ввода, указываем на написанный выше метод.
В итоге получаем что-то типа такого:
Вот один из способов, как можно относительно просто добавить механизм промо-кодов в свои игры.
Если кому-то интересно, в следующий раз могу рассказать про локализацию.
А если кому-то интересно посмотреть на игру в живую, вот ссылка:
https://play.google.com/store/apps/details?id=ru.dllsky.boom...
Спасибо за внимание и успеха в геймдеве!







Лига Разработчиков Видеоигр
9K постов23.1K подписчика
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"