一个生成短链接小工具,和TextMeshPro字库设置

本文介绍如何在Unity中使用TextMeshPro组件实现长URL转短链接功能,包括创建字体、设置输入验证和调用外部服务。通过实例演示了如何使用TMP_Dropdown和TMP_InputField,以及如何通过网络请求获取短链接并展示在界面上。

Unity2021.3.3字体组件TextMeshPro

先上demo源码:

using System.Collections;
using System.Collections.Generic;
using System.Text;
using MiniJSON;
using TMPro;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;

public class UrlGetUI : MonoBehaviour
{
    private TMP_Dropdown dropdown;
    private TMP_InputField inputField;
    private TextMeshProUGUI textMesh;
    private TextMeshProUGUI placeholder;
    private Button button;
    private Button buttonGoUrl;
    private int cb;
    private string longUrl;
    private string shorturl;


    void Start()
    {
        dropdown = GameObject.Find("Canvas/Panel/Dropdown").GetComponent<TMP_Dropdown>();
        inputField = GameObject.Find("Canvas/Panel/InputField (TMP)").GetComponent<TMP_InputField>();
        textMesh = GameObject.Find("Canvas/Panel/Text_Short").GetComponent<TextMeshProUGUI>();
        placeholder = GameObject.Find("Canvas/Panel/InputField (TM
### 根据特定文本生成 TextMeshPro 字库的方法 在 Unity 中,TextMeshPro 支持通过自定义字符集来生成字体资源(Font Asset),从而确保只包含项目中实际使用的字符。这种方法不仅节省内存,还能提高运行时性能,特别是在处理中文、日文等字符量庞大的语言时尤为重要 [^2]。 #### 使用 FontAssetCreator 工具手动添加字符 Unity 提供了 `FontAssetCreator` 编辑器工具用于创建 TMP_FontAsset 资源。开发者可以在 `Window > TextMeshPro > Font Asset Creator` 打开该工具,并导入 `.ttf` 字体文件。将 `CharacterSet` 设置为 `Custom Characters` 后,在输入框中填入需要支持的字符集合(例如“你好世界”)。这样生成的字体图集仅包含指定字符,避免了不必要的内存占用 [^2]。 #### 通过代码动态构建字体资源 若希望根据运行时文本内容动态生成字库,可使用 `TMP_FontAsset.CreateFontAsset(Font font)` 方法创建基础字体资源,并通过 `fontAsset.characterTable` 添加所需字符。示例代码如下: ```csharp using TMPro; using UnityEngine; public class CustomFontGenerator : MonoBehaviour { public Font sourceFont; public string customCharacters = "你好世界"; public void GenerateCustomFont() { if (sourceFont == null) { Debug.LogError("未指定字体"); return; } TMP_FontAsset fontAsset = TMP_FontAsset.CreateFontAsset(sourceFont); foreach (char c in customCharacters) { TMP_Character character = new TMP_Character(c, fontAsset.faceInfo); fontAsset.characterTable.Add(c, character); } string path = "Assets/Fonts/" + sourceFont.name + "_Custom.asset"; UnityEditor.AssetDatabase.CreateAsset(fontAsset, path); UnityEditor.AssetDatabase.SaveAssets(); Debug.Log($"字体资源已保存至 {path}"); } } ``` 此方法允许在运行时或编辑器脚本中动态添加字符,适用于需要根据用户输入或本地化内容按需加载字符的场景 [^2]。 #### 性能优化建议 - **图集大小设置**:推荐将字体图集宽度设为 8192 像素,以支持大量字符并减少重建网格频率。 - **字符筛选策略**:对于多语言项目,应根据当前语言环境预加载相应字符集,而非一次性加载全部 Unicode 字符。 - **SDF 渲染技术**:使用 SDF(Signed Distance Field)字体渲染技术可显著提升缩放效果性能表现,尤其适合移动端设备 [^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小道-李道玄

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

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

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

打赏作者

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

抵扣说明:

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

余额充值