按下时更改切换按钮背景的功能

时间:2016-03-10 15:45:09

标签: c# unity3d

我正在创建一个功能,可以在按下按钮时更改切换按钮的背景图像,但对我来说无法正常工作。

我目前有这个功能:

public Image Background1;
public Image Background2;
public Toggle theToggle;

public void ChangeBackground()
        {
        if (theToggle.isOn) {
            theToggle.image () = Background1;
        }
        else
        {
            theToggle.image() = Background2;
            }
        }

我的问题是在场景视图中我没有收到插槽选项,以便将图像添加到Background1和Background2,就像在其他脚本上一样。此外,编辑器无法识别图像参数,尽管它在脚本参考上并且我已使用以下内容添加了UI lybrary:

using UnityEngine.UI;

另外,我试图将UpdateBackground()函数放在Update()函数中,就像这样,我收到一个解析错误:

public Image Background1;
public Image Background2;
public Toggle theToggle;

void Update () 
    {
        public void ChangeBackground()
        {
        if (theToggle.isOn) {
            theToggle.image () = Background1;
        }
        else
        {
            theToggle.image() = Background2;
            }
        }
    }

这个解析错误很奇怪,因为这是我在其他脚本中的方式。你能救我吗?

1 个答案:

答案 0 :(得分:2)

好的,你有一个编译器错误,因为你试图调用函数“image”并同时为它赋值。我的猜测是你想将image属性设置为某个Sprite类型变量“Background1”

所以你要改变这样:

public void ChangeBackground()
{
        if (theToggle.isOn) {
            theToggle.image = Background1;
        }
        else
        {
            theToggle.image = Background2;
            }
        }        
}

现在,当编译器出错时,检查员不会使用脚本中的新字段进行更新。因此,如果您在脚本中的某个位置声明了变量(通常在类声明之后),如下所示:

public Image background1;
public Image background2;

只要您没有编译错误并且它们是公开的,它们就会出现在检查器中,等待设置

此外,您不能在C#和大多数编程语言中放置函数声明,也不想放置函数声明。

必须ChangeBackground功能拖到你的TOGGLE上。将它拖到这里......

enter image description here

请注意!以下是非常先进的信息,与Grow的问题没有直接关系。

切换切换时应用ChangeBackground函数的简单方法是,您可以通过包含以下两个函数在脚本中执行此操作:

void OnEnable()
{
    theToggle.onValueChanged += ChangeBackground
}

void OnDisable()
{
    theToggle.onValueChanged -= ChangeBackground
}