private const string materialName = "Common SDF Normal.mat";
    private static Material _material_Normal;
    public static Material Material_Normal
    {
        get
        {
            if(_material_Normal is null)
            {
                // 从MaterialReferenceManager获取已加载的材质
                int hash = CaculateTMPTagHash(materialName.Replace(".mat", ""));
                if (MaterialReferenceManager.TryGetMaterial(hash, out Material material))
                {
                    _material_Normal = material;
                }
                else
                {
                    // 如果MaterialReferenceManager中没有,尝试通过UIManager加载
                    var mat = UIManager.instance.LoadTMPMaterial(materialName);
                    MaterialReferenceManager.AddFontMaterial(hash, mat);
                    _material_Normal = mat;
                }
            }
            return _material_Normal;
        }
    }
    public static int CaculateTMPTagHash(string tag)
    {
        if (string.IsNullOrEmpty(tag)) return 0;
        int hashCode = 0;
        for (int i = 0; i < tag.Length; i++)
        {
            int unicode = tag[i];
            hashCode = (hashCode << 5) + hashCode ^ unicode;
        }

        return hashCode;
    }

    public void OnSelect_Color_141418_bbb5c8(TextMeshProUGUI tmp)
    {
        if (tmp is not null)
        {
            tmp.color = this.IsOn ? "#141418".ToColor32() : "#bbb5c8".ToColor32();
            tmp.fontMaterial = this.IsOn ? Material_Normal : tmp.font.material;
        }
    }

最后修改:2025 年 08 月 15 日
如果觉得我的文章对你有用,请随意赞赏