Unity. Уроки. Как добавить в игру промо-коды

Привет, Игроделы-С-Пикабу!


Сегодня хочется написать обучающий пост о том, как можно в игру на Unity добавить систему собственных промо-кодов...

А расскажу на примере тестируемой казуалки "Boomerang Boom Master".

Как и всегда в программировании, это можно реализовать разными способами. Я же рассмотрю вариант, когда список заготовленных промо-кодов и предметов, которые они выдают, реализован в виде статического класса.

Итак, для начала создадим класс "Данные Промо-кода", который будет содержать сам промо-код и набор предметов (словарь):

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

prizes - словарь получаемых предметов с сигнатурой <"строковый идентификатор предмета", "целочисленное кол-во предметов">.


Так мы получили описание "одной единицы промо-кода". В сохранении мы будем хранить идентификаторы (id) использованных промо-кодов, что бы избежать многократного их использования одним игроком. А в статичном классе мы будем хранить список всех доступных в игре промо-кодов именно в виде списка с элементами класса BonusCodeData.


Создаем статичный класс со статичным списком. Класс необходим именно статичный для упрощения работы с ним - он будет доступен везде, не нужно инициализировать и не нужно во время игры заполнять список.

Заполним список несколькими промо-кодами.

Здесь (в примере поста) для упрощения идентификаторы предметов "написаны вручную". Однако, в рабочем варианте я указываю константы из статичного класса "ConstantsResource". Это облегчает отладку, если идентификаторы предметов/ресурсов в коде используются неоднократно. А так же это упрощает изменение этих идентификаторов.

На этом подготовка промо-кодов завершена. Теперь переходим к механизму активации этих промо-кодов...


Система следующая: активируем поле ввода, вводим код, если данный код не использовался ранее и содержится в статичном списке, то активируем его.

В нужном месте интерфейса игры размещаем поле ввода TMP_InputField. Если необходимо, настраиваем его вид. Лично я сделал в виде кнопки с надписью, а тот текст, что вводит игрок, не отображаю в поле (типа секретность и всё такое...) - видно только при вводе с виртуальной клавиатуры.

Для этого поля ввода пишем обработчик окончания ввода:

Настраиваем поле ввода, указываем на написанный выше метод.

В итоге получаем что-то типа такого:

Вот один из способов, как можно относительно просто добавить механизм промо-кодов в свои игры.

Если кому-то интересно, в следующий раз могу рассказать про локализацию.


А если кому-то интересно посмотреть на игру в живую, вот ссылка:

https://play.google.com/store/apps/details?id=ru.dllsky.boom...


Спасибо за внимание и успеха в геймдеве!

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

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

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества