Настройки в Unity 5: гайд по созданию меню

В игре добавлена кнопка настроек с управлением музыкой и ссылками на социальные сети. Initially, the settings button was displayed but inactive. This has been rectified by creating functional controls.

Добавление кнопок настроек

В папку Sprites добавлены кнопки: Google Play, Twitter и кнопка управления музыкой (включение/выключение). Все кнопки в 16-битном формате. Существующая кнопка настроек (settings) продублирована и переименована в Music. Кнопка Music продублирована ещё дважды, копии переименованы в Google Plus и Twitter. Кнопки Google Plus и Twitter растянуты по горизонтали с нулевыми отступами. Кнопки Music, Google Plus и Twitter расположены вертикально друг над другом и изначально скрыты для управления скриптом.

Реализация скрипта для кнопок настроек

В скрипте, обрабатывающем кнопку settings, добавлен switch case для обработки нажатия. Внутри case settings используется цикл for, итерирующийся по дочерним объектам кнопки settings (transform.GetChild(i)). В цикле используется gameObject.SetActive() для отображения/скрытия дочерних объектов. Индекс i используется корректно, предотвращая отображение только первого элемента. Исправлена ошибка, где вместо переменной цикла i использовался ноль.

// ... код скрипта ...

case "settings":
    for (int i = 0; i < transform.childCount; i++) {
        transform.GetChild(i).gameObject.SetActive(!transform.GetChild(i).gameObject.activeSelf);
    }
    break;

// ... остальной код скрипта ...

На данном этапе кнопки отображаются/скрываются, но их размер меняется.

Управление размером кнопок

Для решения проблемы с изменением размера кнопок добавлены публичные переменные: bigger и lower. bigger определяет размер кнопок при открытии, lower — при закрытии. По умолчанию bigger = 0.55f, lower = 0.5f для кнопки settings, и 1.1f и 1.0f соответственно для дочерних кнопок.

public float bigger = 0.55f;
public float lower = 0.5f;

// ... остальной код скрипта ...

Реализация кнопок Twitter и Google Plus

Для кнопок Twitter и Google Plus реализована логика открытия соответствующих страниц в браузере: twitter.com и google.com при нажатии.

Реализация кнопки управления музыкой

Для кнопки Music добавлены переменные типа Sprite: musicOn и musicOff. В скрипте используется PlayerPrefs.GetString("Music") для проверки состояния музыки (включена/выключена). В зависимости от состояния меняется Sprite на кнопке и включается/выключается аудио.

// ... другие переменные ...
public Sprite musicOn;
public Sprite musicOff;

// ... остальной код скрипта ...

case "Music":
    string musicState = PlayerPrefs.GetString("Music");
    if (musicState == "Off") {
        // Включаем музыку
        // ... код включения музыки ...
        PlayerPrefs.SetString("Music", "On");
    } else {
        // Выключаем музыку
        // ... код выключения музыки ...
        PlayerPrefs.SetString("Music", "Off");
    }
    break;

// ... остальной код скрипта ...

Для управления звуком используется компонент AudioSource.

Исправление ошибок

Исправлены следующие ошибки:

  • Кнопки не скрывались при запуске игры.
  • Некорректное состояние музыки после перезапуска.
  • Проблема со спрайтами на кнопке Music.

Создана функциональная кнопка настроек с управлением музыкой и ссылками на социальные сети. Все элементы работают корректно, ошибки устранены. Использовались циклы, switch case, PlayerPrefs, компоненты Transform, GameObject и AudioSource.

Что будем искать? Например,программа