Всех приветствую! Сделал небольшой бесплатный ассет для добавления внутриигровых достижений, чтобы разработчики не тратили времени на разработку такой приятной мелочи для игроков.
В данном ассете вы сможете:
- Создать свои собственные достижения (с прогрессом достижения и без)
- Вывести получаемое(-ые) достижение(-я) на экране
- Создать список всех игровых достижений в списке в котором можно отслеживать прогресс полученных достижений
В будущем думаю внести пару исправлений в программный код, добавить по возможности интеграцию достижений со Steam'ом и, возможно, ещё пару интересных фич.
С моим ассетом можете ознакомится перейдя по ссылке
Смотрите также:
Комментарии
RedHelium, я правильно понимаю, что он сохраняет статус прохождения ачивки внутри скриптебл объекта?
alexprey, Да, в новой версии, которую на днях постараюсь закончить, будет возможность получать список всех параметров достижений в JSON'e для возможной записи в файл или даже локализации + перепишу основную часть кода, чтобы разработчик сам решал, что и как должно быть с выводом достижений, а не ограничивать его только тем, чтобы выводить иконку и заголовок достижения.
+ Весь код будет ещё выложен на гитхаб (хотя репозиторий там уже есть со старой версией)
RedHelium, хм... Просто в билд версии данные в скриптебл обьектах не сохраняются. Тут либо в преференсы сохранять либо в облако. Сохранять в файл такая себе идея особенно если работать с мобилками или веб приложениями.
alexprey, То, что в билде не сохраняются это понятно, но поэтому я и хочу попытаться сделать запись всех достижений в JSON, чтобы удобнее было работать с записью данных. С другой стороны, каждый разработчик сам решает, в чем ему хранить игровые данные и как их записывать, поэтому подстроить данную систему вряд ли получится, только дать данные для записи.
RedHelium, можешь использовать интерфейс. Сделай интерфейс доступа к хранилищу состояний и сделай потом несколько реализаций. Если кого то не устроит встроенная реализация сможет ее переопределить.
alexprey, Да, почему бы и не сделать именно так, главное чтобы не было проблем при таком подходе это хранилище не было доступно из класса, которое не должно иметь к нему доступ, спасибо за совет!
Было бы интересно глянуть ассет в купе со связкой магазинных ачивок - например, Google Play или Steam.
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]