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







Жестоко, жестоко. БД, вебреквесты уже устарели? При добавление каждого нового промо ты будешь перезаливать билд? Сурово.
Ты создал пример читменеджера, но супер примитивный.