统一单击按钮时如何更改面板颜色

时间:2018-08-15 12:04:37

标签: c# unity3d colors panel

我想在单击按钮时更改面板颜色,我尝试 为其更改按钮的颜色而不是面板颜色进行编码

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

} 

我该怎么办?

2 个答案:

答案 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。

相关问题