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
相关产品推荐
相关产品推荐

