单击按钮上的Unity C#清除图像

时间:2016-08-26 14:24:49

标签: c#

我试图在Unity中编写脚本,在UI按钮上单击显示图像,然后当按下另一个UI按钮时,这些图像将消失,新图像与刚刚按下的按钮相关联会出现。因此,如果我按下按钮A将出现图像A然后如果我按下按钮B图像A将消失,图像B将出现。这就是我到目前为止所拥有的。当点击按钮时,我正在使用此代码显示我的图像:

public Image myImage;

void Start ()
{
    myImage.enabled = false;                //image hidden at scene start
}

public void buttonClick()                   //when user clicks button
{   
    myImage.enabled = true;                 //image appears
}

显然没有任何东西告诉图像消失所以我试着设置按钮是否被点击了这样的东西:

void Start ()
{
    myImage.enabled = false;                //image hidden at scene start
}

public void buttonClick()                   //when user clicks button
{   
    bool checkClick = true;                 

    if (checkClick = true)                  //if button clicked
    {
        myImage.enabled = true;             //display image
    }
    else if (checkClick = false)            //if button not clicked
    {
        myImage.enabled = false;            //image hidden
    }
}

}

根本不起作用。我想我需要在那里使用void Update(),所以它正在检查按钮所处的状态,但我还没有得到它。我可能错过了一些简单的东西,编码并不是我的事。我非常感谢建议,谢谢!

3 个答案:

答案 0 :(得分:2)

if (checkClick = true)应为if (checkClick == true),依此类推。由于=是赋值运算符,而==是比较运算符。

修复然后调试并确保您的逻辑/设计按预期工作。

答案 1 :(得分:0)

你也可以这样做:

public void buttonClick()                   //when user clicks button
{   
    bool checkClick = true;  

    myImage.enabled = checkClick;
}

但在你的情况下checkClick将永远是真的。您应该将其声明为类属性,并在单击时更改值(通过checkClick != checkClick)。

答案 2 :(得分:0)

你正在寻找这样的东西:

/// <summary>
/// Attach this script to any object and assign all (20) images to in images from inspector.
/// </summary>
public class ImageContainor : MonoBehaviour
{
    /// <summary>
    /// The List of images to choose from.
    /// </summary>
    public List<Image> images = new List<Image>(20);

}

/// <summary>
/// Attach this script to all the buttons.
/// </summary>
public class ButtonClickHandler : MonoBehaviour
{
    /// <summary>
    /// The image containor reference, assign the object on which you have ImageContainor script from inspector.
    /// </summary>
    public ImageContainor imageContainor;


    /// <summary>
    /// Register this method as OnClick() Handler from inspector.
    /// Set index parameter accordingly to enable/disable desired image with this button.
    /// </summary>
    /// <param name="index">Index.</param>
    public void ButtonClick(int index)
    {
        for (int i = 0; i < imageContainor.images.Count; i++)
        {
            if (i == index)
            {
                imageContainor.images[i].enabled == true;
            }
            else
            {
                imageContainor.images[i].enabled = false;
            }
        }
    }

}