2016-06-22 1 views
0

Как и выше, я хочу изменить изображение ImageButton, когда произойдет какое-либо событие (щелкнули или несколько секунд спустя).Измените образ ImageButton permenantly, когда что-то сделайте

void OnclkMe(GameObject go) 
{ 
    go.GetComponentInChildren<UISprite>().spriteName = "NumCard_01"; 
} 

Когда я нажал на кнопку, это выглядит как хорошо работать, но измененный образ был вновь изменен на первое изображение, когда mousepoint съехать кнопки.

Я проверил spriteName с помощью Debug.Log func, и я проверил, что спрайт был автоматически изменен.

Как я могу изменить изображение ImageButton, когда происходит какое-либо событие навсегда?

+0

Убедитесь, что 'NumCard_01' существует в состоянии. Кроме того, он чувствителен к регистру. Если это новый проект, вы не должны использовать NGUI. Вам нужно использовать новый пользовательский интерфейс Unity. Исключение - когда вся ваша игра уже сделана с помощью NGUI. – Programmer

+0

NumCard_01 существует в атласе. и я использовал NGUI, потому что хочу сократить период развития ... Но ... это снова преследует меня? Мой проект уже начальный этап. –

+0

Похоже. Его можно прекратить в любое время, если многие люди принимают UGUI Unity. Я использовал «Daikon Forge». Это было потрясающе, но я сразу переключился на пользовательский интерфейс Unity после его выхода. Спустя несколько месяцев 'Daikon Forge' был прекращен и больше не обновляется. Дело в том, что если люди перестанут его покупать, у издателя не останется времени и ресурсов, чтобы продолжать его обновлять. – Programmer

ответ

1

Для новых проектов вы должны использовать uGUI, который является новым пользовательским интерфейсом Unity.

Вы можете зарегистрироваться на событие с кнопкой Button.onClick.AddListener(() => callbackFunction()), и вы можете сменить спрайт на изображение кнопки с помощью Button.image.sprite = newSprite;. Вам нужно включить using UnityEngine.UI; в начало вашего скрипта.

public Button button1; 
public Button button2; 

public Sprite newSprite; 

void OnEnable() 
{ 
    //Register Button Events 
    button1.onClick.AddListener(() => buttonCallBack(button1)); 
    button2.onClick.AddListener(() => buttonCallBack(button2)); 
} 

private void buttonCallBack(Button buttonPressed) 
{ 
    if (buttonPressed == button1) 
    { 
     //Your code for button 1 
     buttonPressed.image.sprite = newSprite; 
    } 

    if (buttonPressed == button2) 
    { 
     //Your code for button 2 
    } 
} 

void OnDisable() 
{ 
    //Un-Register Button Events 
    button1.onClick.RemoveAllListeners(); 
    button2.onClick.RemoveAllListeners(); 
} 
+0

Не менее эффективна функция анонимной функции AddListener, чем событие? – matiaslauriti

+0

@ P0lT10n Лучше использовать событие в Unity в любое время, потому что его производительность лучше. 'AddListener' создан, чтобы упростить создание события с помощью кнопок. Нет потери производительности при использовании 'AddListener', потому что вы не нажимаете кнопку 2 миллиона раз в секунду. – Programmer

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