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

unity how to changing panel color when click button

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

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

} 

我需要做什么?

你没有任何按钮,但你已经做到了,面板的颜色会在每一帧都改变,而不是每次点击。 您必须创建一个按钮,将其作为参数输入代码,然后使用 OnClick 事件。 更多信息请点击此处:https://docs.unity3d.com/ScriptReference/UI.Button-onClick.html

啊,搞什么鬼,我会解释为什么它不起作用以及你应该做什么。

(我假设您按照我在评论中的建议更改了更新方法)

首先你应该检查你的脚本在编辑器中附加到什么游戏对象。我假设它附在按钮上。那么 Start 方法中发生了什么?正确 — 您正在将 Button 的 Image 组件分配给 panel 变量。因此,当调用 panel.color = GetRandomColor(); 时,它会更改按钮的 Image 组件的颜色。

对此你能做些什么?简单的方法是完全删除 Start 方法,因为 panel 变量被声明为 public 将其分配给编辑器中的面板游戏对象。