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

解决MRTK3中CompressableButtons图标注视时颜色重置为白色的问题

解决NearMenu按钮注视时图标颜色重置问题

问题原因

NearMenu的UX.Button组件在注视(高亮)状态下,会自动应用预设的状态颜色样式,覆盖你手动设置的图标颜色,导致注视时变回白色。

解决方案

方法1:直接修改按钮状态颜色配置

  • 选中目标NearMenu按钮,找到UX.Button组件
  • 展开Icon选项组,找到Color下的各状态颜色设置(Normal、Highlighted、Pressed等)
  • 将Highlighted(注视触发的高亮状态)的颜色设置为你需要的自定义颜色,和Normal状态保持一致即可,这样注视时就不会变色

方法2:代码强制锁定图标颜色

如果需要动态修改颜色,且不想依赖状态配置,可以通过监听按钮状态变化,每次切换时强制重置颜色:

using UnityEngine;
using TMPro;

public class LockIconColor : MonoBehaviour
{
    public Color targetColor;
    private TextMeshPro _iconText;
    private UX.Button _uxButton;

    void Awake()
    {
        _uxButton = GetComponent<UX.Button>();
        _iconText = _uxButton.Icon.Char.GetComponent<TextMeshPro>();
        
        // 初始设置颜色
        UpdateIconColor(targetColor);
        // 监听状态变化,强制重置颜色
        _uxButton.OnStateChanged.AddListener(_ => UpdateIconColor(targetColor));
    }

    // 外部调用此方法动态修改颜色
    public void UpdateIconColor(Color newColor)
    {
        targetColor = newColor;
        if (_iconText != null) _iconText.color = targetColor;
    }
}
  • 将脚本挂载到每个需要固定颜色的NearMenu按钮上
  • 在Inspector面板设置targetColor为目标颜色,后续动态修改时调用UpdateIconColor方法即可

方法3:禁用状态颜色自动切换

如果不需要按钮的状态颜色变化效果,可以直接关闭自动切换:

  • 在UX.Button组件的Icon选项组中,取消勾选Use State Colors(若有此选项)
  • 之后图标颜色会保持你手动设置的固定值,不会随交互状态改变

内容的提问来源于stack exchange,提问作者Hai Kazuma Desu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 04:45:45