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

Unity运行时如何将TTF文件导入为自定义字体?

加载自定义字体的可行方案(Unity环境)

原生Font类动态加载方案

如果使用Unity原生Text组件,可通过读取字体文件字节流直接创建Font实例,支持TTF/OTF格式:

using System.IO;
using UnityEngine;
using UnityEngine.UI;

public class CustomFontLoader : MonoBehaviour
{
    public Text targetText;

    public void LoadCustomFontFromLocal(string fontPath)
    {
        if (!File.Exists(fontPath)) return;
        byte[] fontBytes = File.ReadAllBytes(fontPath);
        
        Font customFont = new Font(fontBytes);
        targetText.font = customFont;
        targetText.text = "测试自定义字体";
    }
}

TMPro动态加载自定义字体方案

针对TextMeshPro组件,需通过TMP_FontAsset.CreateFontAsset方法生成可直接使用的字体资源:

using System.IO;
using UnityEngine;
using TMPro;

public class TMPCustomFontLoader : MonoBehaviour
{
    public TextMeshProUGUI targetTMPText;

    public void LoadCustomTMPFont(string fontPath)
    {
        if (!File.Exists(fontPath)) return;
        byte[] fontBytes = File.ReadAllBytes(fontPath);
        
        TMP_FontAsset tmpFontAsset = TMP_FontAsset.CreateFontAsset(fontBytes);
        tmpFontAsset.material.shader = Shader.Find("TextMeshPro/Distance Field");
        
        targetTMPText.font = tmpFontAsset;
        targetTMPText.text = "TMPro自定义字体测试";
    }
}

平台兼容性注意事项

  • 移动端:无法直接通过File.ReadAllBytes读取StreamingAssets目录,需用UnityWebRequest加载:
    using UnityEngine.Networking;
    using UnityEngine;
    using TMPro;
    
    public IEnumerator LoadFontOnMobile(string fontName)
    {
        string fontUrl = Path.Combine(Application.streamingAssetsPath, fontName);
        using (UnityWebRequest request = UnityWebRequest.Get(fontUrl))
        {
            yield return request.SendWebRequest();
            if (request.result == UnityWebRequest.Result.Success)
            {
                byte[] fontBytes = request.downloadHandler.data;
                TMP_FontAsset tmpFont = TMP_FontAsset.CreateFontAsset(fontBytes);
                targetTMPText.font = tmpFont;
            }
        }
    }
    
  • 权限问题:确保字体文件有读取权限,PC端可通过文件选择器让用户指定路径,移动端需申请外部存储读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:09:59