2016-12-21 5 views
1

У меня есть кнопка разблокировки для игры, она работает, но я хочу, чтобы пользователь сам нажал кнопку, а затем изменил изображение кнопки. Как вы можете видеть в коде ниже, когда оценка> = 10, изображение кнопок меняется немедленно. Как я могу это достичь?Как изменить изображение кнопки на клике Unity

public GameObject lockBtn; 
Image lockComp; 
public Sprite myLockImage; 
public Sprite myLockSecondImage; 
///////////////////////////////////////// 

lockComp = lockBtn.GetComponent<Image>(); 

     if (bestScore >= 10) { 
      lockComp.sprite = myLockImage; 
     } 
     else 
     { 
      lockComp.sprite = myLockSecondImage; 
     } 
+0

Этот код даже не компилируется, так как он не помещается в функцию. Почему бы вам не включить именно то, что у вас есть? – Programmer

+0

это, я просто вырезал код, например – artG

ответ

1

Просто добавьте прослушиватель событий на свою кнопку, чтобы изменить изображение.

lockComp.sprite = myLockSecondImage; 
    if (bestScore >= 10) { 
     lockBtn.GetComponent<Button>().onClick.addEventListener(OnLockButtonClicked) ; 
    } 

    // ... 
    private void OnLockButtonClicked() 
    { 
     lockComp.sprite = myLockImage ; 
    } 

Будьте осторожны не добавить этот фрагмент кода в функцию обновления. В противном случае, вы будете добавить новый прослушиватель событий каждый кадр


Сохранение «разблокировано состояние» кнопки в файл, чтобы не показывать разблокированный спрайт, когда пользователь начинает игру снова может быть хорошая идея.

1

Поместите свой код в файле и класса имени ButtonScript и в методе имени OnButtonClick()

public class ButtonScript : MonoBehaviour { 

    public void OnButtonClick(){ 
     lockComp = lockBtn.GetComponent<Image>(); 
     if (bestScore >= 10) { 
      lockComp.sprite = myLockImage; 
     } 
     else 
     { 
      lockComp.sprite = myLockSecondImage; 
     } 
    } 
} 

Затем добавьте этот скрипт на Баттона и в OnClick событие ссылка на Кнопка и его Способ:

OnClick event

Смежные вопросы