You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何让绑定脚本的按钮点击仅改变自身颜色?

解决Unity按钮点击全变色问题

问题出在你的脚本要么共享了全局状态,要么没有正确绑定当前按钮的组件,导致所有按钮实例同步了颜色变化。按以下步骤修改即可:

  • 正确获取当前挂载脚本的按钮组件
    不要用全局查找(比如FindObjectOfType<Button>()),直接获取自身组件,确保每个脚本实例只操作自己对应的按钮:

    private Button button;
    
    void Awake()
    {
        // 获取当前GameObject上的Button组件
        button = GetComponent<Button>();
        // 绑定点击事件,直接传方法名更简洁
        button.onClick.AddListener(Click);
    }
    
  • 修改Click方法,仅操作当前按钮的颜色
    直接修改当前按钮的Graphic组件(比如Image或Text),不要使用静态变量或全局材质:

    void Click()
    {
        // 如果按钮用Image做背景,获取Image组件
        Image btnImage = button.GetComponent<Image>();
        // 设置目标颜色,示例用红色
        btnImage.color = new Color(0.8f, 0.2f, 0.2f);
    
        // 如果是Text按钮,替换为获取Text组件:
        // Text btnText = button.GetComponentInChildren<Text>();
        // btnText.color = Color.white;
    }
    
  • 排查并移除共享状态
    检查脚本中是否有static修饰的颜色变量(比如static Color currentColor;),这类变量会被所有脚本实例共享,删除static修饰符即可。

每个按钮的脚本实例都是独立的,只要确保操作的是自身组件的属性,就只会改变当前点击按钮的颜色。

内容的提问来源于stack exchange,提问作者Operator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 04:27:00