【问题标题】:How to change button image on click Unity如何在单击 Unity 时更改按钮图像
【发布时间】:2016-12-21 13:55:09
【问题描述】:

我有游戏的解锁按钮,它可以工作,但我想用户自己可以按下按钮,然后按钮图像改变。正如您在下面的代码中看到的那样,当分数 >= 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;
        }

【问题讨论】:

  • 此代码甚至无法编译,因为它没有放入函数中。为什么不完全包括你所拥有的?
  • 是的,例如我只是剪切代码

标签: image button unity3d uibutton


【解决方案1】:

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

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

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

小心不要将这段 sn-p 代码添加到更新函数中。否则,您将添加一个新的事件侦听器每帧


将按钮的“解锁状态”保存到文件中,以便在用户再次开始游戏时不显示解锁的精灵。

【讨论】:

    【解决方案2】:

    将您的代码放入名为ButtonScript文件以及名为OnButtonClick()方法

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

    然后将此脚本添加到您的 Button 上,并在 OnClick 事件中添加对 Button 及其 Method 的引用em>:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 2013-11-05
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多