我想在单击按钮时更改面板颜色,我尝试 为其更改按钮的颜色而不是面板颜色进行编码
public Image panel;
// Use this for initialization
void Start () {
panel = GetComponent<Image>();
}
// Update is called once per frame
public void OnButtonClick {
panel.color = GetRandomColor();
}
Color GetRandomColor(){
return new Color(Random.value, Random.value, Random.value);
}
}
我该怎么办?
答案 0 :(得分:0)
您没有任何按钮,而且已经做到了,因此面板的颜色将在每一帧而不是每次单击时改变。 您必须创建一个按钮,将其作为代码的参数输入,然后使用OnClick事件。 有关此内容的更多信息:https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html
答案 1 :(得分:0)
啊,到底是什么,我将解释为什么它不起作用以及您应该怎么做。
(我假设您已按照评论中的建议更改了Update方法)
首先,您应检查编辑器中附加了脚本的GameObject。我假设它已连接到Button。那么Start方法中发生了什么?右-您正在将Button的function highest(myArguments)
{
return myArguments.sort(function(a,b)
{
return b - a;
});
}
sortedArguments = highest(myArguments);
组件分配给Image
变量。因此,在调用panel
时,它会更改Button的panel.color = GetRandomColor();
组件的颜色。
您能对此做什么?简单的方法是完全删除Image
方法,并且由于Start
变量被声明为panel
,因此将其分配给编辑器中的面板GameObject。