unity Font字体替换

这篇博客介绍了一个在Unity3D中批量替换游戏对象上Text组件字体的EditorWindow工具。通过遍历Prefab资源,查找并更新所有Text组件的字体,实现了从默认字体到指定字体的转换,简化了字体替换工作流程。

今天突然来个替换字体需求,其实不难,但是有些编写函数忘记了=。=

直接贴代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;


public class FontToolEditor : EditorWindow
{

    private const string MENU_MAIN_WINDOW = "Tools/Font替换";

    static Font defaultFont_1 = new Font("FZCuYuan");
    static Font defaultFont_2 = new Font("Arial");
    static Font toFont = AssetDatabase.LoadAssetAtPath<Font>("Assets/Font/UTMCafeta.ttf"); 

    [MenuItem(MENU_MAIN_WINDOW)]
    private static void Init()
    {
        List<GameObject> prefabs = new List<GameObject>();
&

### Unity中批量替换字体的方法或脚本 在Unity中,批量替换字体可以通过编写脚本来实现。以下是一个详细的解决方案[^1],该方案利用了Unity的`TextMeshPro`组件和`Text`组件来查找场景中的所有文本对象,并将它们的字体替换为指定的字体。 #### 方法描述 为了实现批量替换字体的功能,可以编写一个C#脚本,该脚本会遍历当前场景中的所有文本对象(包括`Text`和`TextMeshPro`),并将其字体替换为指定的字体。以下是具体实现: #### 脚本代码 ```csharp using UnityEngine; using UnityEngine.UI; public class FontReplacer : MonoBehaviour { public Font newFont; // 用于替换字体 (适用于Text组件) public TMP_FontAsset newTMPFont; // 用于替换字体 (适用于TextMeshPro组件) void Start() { ReplaceFonts(); } void ReplaceFonts() { // 替换 Text 组件的字体 Text[] texts = FindObjectsOfType<Text>(); foreach (Text text in texts) { if (newFont != null && text.font != newFont) { text.font = newFont; } } // 替换 TextMeshPro 组件的字体 TMPro.TMP_Text[] tmpTexts = FindObjectsOfType<TMPro.TMP_Text>(); foreach (TMPro.TMP_Text tmpText in tmpTexts) { if (newTMPFont != null && tmpText.font != newTMPFont) { tmpText.font = newTMPFont; } } } } ``` #### 使用说明 1. 创建一个新的C#脚本文件,命名为`FontReplacer`。 2. 将上述代码复制到脚本文件中。 3. 在Unity编辑器中创建一个空的游戏对象,并将此脚本附加到该对象上。 4. 在Inspector面板中,为`newFont`字段指定一个`Font`资源(适用于`Text`组件)。 5. 同样地,为`newTMPFont`字段指定一个`TMP_FontAsset`资源(适用于`TextMeshPro`组件)。 6. 运行场景,脚本会自动将所有文本对象的字体替换为指定的字体。 #### 注意事项 - 如果场景中同时存在`Text`和`TextMeshPro`组件,则需要分别处理这两种类型的字体替换。 - 确保指定的字体资源不为空,否则可能会导致运行时错误[^1]。 #### 扩展功能 如果需要更复杂的字体替换逻辑(例如根据特定条件替换字体),可以在`foreach`循环中添加额外的判断条件。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天与Lrong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值