Проблема с кнопкой звука в меню паузы в игре на Юнити,как решить?
помогите пожалуйста реализовать кнопку звук так чтобы при нажатии на неё менялся текст Вкл если нажата и выкл если отжата.Вот условие:Кнопка «Звук» не должна работать, однако она должна сохранять свое значение в PlayerPrefs (возможно, хорошим выбором в этом случае будет использование Int, где 0 – это false, а 1 – это true). В зависимости от своего состояния кнопка «Звук» должна изменять либо надпись, либо само изображение. Не могу сладить с Canvas:( Вот мой недоделанный код:
public static int sound;
public GameObject PauseMenuUI;
void Start ()
{
SetText ();
}
void SetText ()
{
sound = PlayerPrefs.GetInt ("Выкл", 0);
}
void OnGUI ()
{
GUI.Label (new Rect (50, 130, 200, 30), "Вкл:" + sound);
GUI.Label (new Rect (40, 100, 150, 20), "Выкл:" + sound);
}
Кто разбирается Канвасе,прошу помочь с кодом для кнопки звука,функцию в Канвасе выставлю сам.
Ответы (1 шт):
Добрый день. А зачем вы рисуете GUI.Label, если вы можете создать кнопку, а потом при нажатии на нее из скрипта просто включать/выключать звук в игре и менять надпись вкл./выкл.?
Вы можете просто создать кнопку (объект с компонентом Button), потом в скрипте прописать примерно такой метод:
bool isSoundActive;
public void onClick () {
if (isSoundActive) {
transform.GetChild(0).GetComponent<Text>().text = "Вкл.";
// выключаем звук
}
else {
transform.GetChild(0).GetComponent<Text>().text = "Выкл.";
// включаем звук
isSoundActive = !isSoundActive;
}
После этого прикрепить скрипт с этой функцией на любой объект, хоть на саму кнопку, потом указать объект со скриптом в компонент Button самой кнопки, выбрать нужный скрипт и функцию.
Ну или вместо этого можно просто вместо компонента Button дать кнопке компонент BoxCollider2D, прицепить ей скрипт, а название метода в скрипте изменить с OnClick на OnMouseDown