icon

Flags

(Удалённая конфигурация)
Флаги - это очень мощный инструмент. Вы можете через консоль разработчика в любое время менять какие-либо данные игры.
Представим, что в нашей игре есть переменные отвечающие за какие-то характеристики персонажа, например - сколько у него будет здоровья и силы. Изменить такие переменные в игре можно удалённо, не обновляя игру!
Таким образом, без изменения билда можно настраивать баланс в игре, безопасно внедрять новые обновления, проводить акции.
И в прибавок к этому - в Яндекс Играх есть возможность проводить тестирование с разными параметрами!

Создание флагов в консоли Яндекс Игр

  1. В разделе Флаги, добавьте флаг:icon
  2. Укажите название и значение флага. В вашем коде, флаг вы будете искать по названию. А значение можно менять через консоль и оно будет передаваться в игру.
  3. Также вы можете добавить условия. Например, если язык русский, то значение будет равно ru.icon
  4. Чтобы изменения вступили в силу, необходимо их опубликовать:icon

Использование в Unity

Получить значение флага можно с помощью метода YG2.GetFlag(string).
Метод GetFlag принимает параметр (string имя флага), и возвращает значение флага.

Пример получения и обработки флагов:

// Допустим, из облака мы получаем уровень сложности

string value = YG2.GetFlag("difficult");  // difficult - имя флага

if (value == "easy")
{
    // Установите лёгкий уровень сложности.
}
else if (value == "hard")
{
    // Установите сложный уровень сложности.
}
else
{
    // Значение флага не определено, установите дефолтное значение.
    // Если значение не определено, метод GetFlag вернёт null.
}

Методы, преобразующие значение флага в другой тип данных:
if (YG2.TryGetFlag("difficult", out string difficult))
{
    // Флаг существует, пользуемся им!
    Debug.Log(difficult);
}

if (YG2.TryGetFlagAsInt("intType", out int intType))
{
    // Флаг существует и преобразован в тип int
}

if (YG2.TryGetFlagAsFloat("floatType", out float floatType))
{
    // Флаг существует и преобразован в тип float
}

if (YG2.TryGetFlagAsBool("boolType", out bool boolType))
{
    // Флаг существует и преобразован в тип bool
}

В представленных методах - качественное преобразование. Изначально строковое значение может иметь опечатки в виде лишних символов. Лишние символы будут удалены, благодаря чему преобразование в определённый тип будет произведено.
Для цифорвых значений можно использовать знак минус.
Для float после целого числа можно использовать как точку, так и запятую.
boolean поддерживает не только true и false, а также 0 и 1.

Все флаги можно получить из словоря YG2.flagsDictionary. Доступно только для чтения.
Также есть массив YG2.flags - в котором элементы массива состоят из структуры Flag. Она имеет два поля: name и value. Доступно чтение и запись.

Подобный пример можно найти в скрипте FlagsExample. Он используется в демо сцене Flags.

Симуляция в Unity Editor

В настройках модуля есть массив Flags. Это массив из структуры Flag, которая описана выше. Создайте флаги подобно созданию конфигурации в консоли разработчика, и в Unity Editor можно будет протестировать работу флагов в вашей игре.
icon