如何在单击Unity上更改按钮图像

时间:2016-12-21 13:55:09

标签: image button unity3d uibutton

我有解锁按钮用于游戏,它有效,但我想用户自己可以按下按钮,然后按钮图像更改。正如您在下面的代码中看到的,当得分> = 10时,按钮图像会立即更改。我怎样才能做到这一点?

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;
        }

2 个答案:

答案 0 :(得分:2)

将您的代码放入名为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

答案 1 :(得分:1)

只需在按钮上添加一个事件监听器即可更改图像。

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

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

小心,不要将此代码段添加到Update函数中。否则,您将添加一个新的事件监听器每一帧

将按钮的“解锁状态”保存到文件中,以便在用户再次启动游戏时不显示未锁定的精灵,这可能是一个好主意。