项目合并后,font字体资源被替换导致TextMeshPro不能显示文字,抢救方法

一,字体消失

项目合并时,因为资源更替,导致TextMeshPro不能找到自己原来使用的font资源,以致不能显示文字。

二、抢救方式

  • 1、找到所有用到TextMeshPro的物体
  • 2、把他们的字体重新设置成你要的字体

关键步骤:

  • 1、找到组件
var textMeshProObjects = GameObject.FindObjectsOfType<TMPro.TextMeshProUGUI>(true).Select(x=>x.gameObject).ToList();
  • 2、拖上字体
    在这里插入图片描述
  • 3、设置字体
    在这里插入图片描述

三、代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using TMPro;
using System.Linq;

/*
 * 一、找到所有的包含textMeshPro的物体
 * 二、把他们的字体设置成指定的字体
 */

public class SetFontOfTextMeshPro : MonoBehaviour
{
    [Header("textMeshPro的字体")]
    [SerializeField]
    public TMP_FontAsset fontOfTextMeshPro;

    [Header("找到的包含textMeshPro的物体")]
    [SerializeField]
    public List<GameObject> textMeshProObjects = new List<GameObject>();

#if UNITY_EDITOR
    [ContextMenu("寻找TextMeshPro的物体")]
#endif
    void FindTextMeshProObject()
    {
        textMeshProObjects.Clear();
        textMeshProObjects = GameObject.FindObjectsOfType<TMPro.TextMeshProUGUI>(true) //查找包含组件《TMPro.TextMeshProUGUI》的所有物体,包含隐藏的
            .Select(x=>x.gameObject).ToList();
    }

#if UNITY_EDITOR
    [ContextMenu("设置找到字体")]
#endif
    void SetTextMeshProObject()
    {
        //textMeshProObjects.ForEach(x => x.GetComponent<TextMeshPro>().font = fontOfTextMeshPro);

        Debug.Log(textMeshProObjects.Count);

        textMeshProObjects.ForEach(x => Debug.Log(x.name));  //TextMeshProUGUI

        textMeshProObjects.ForEach(x => x.GetComponent<TextMeshProUGUI>().font = fontOfTextMeshPro);
    }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值