Unity功能篇:文本框随文字内容动态调整

UI

一、通常的UI层级

二、给Text添加组件

选中TextMeshProUGUI,添加组件:

1、Content Size Fitter

Horizontal Fit:Preferred Size

Vertical Fit:Preferred Size(通常只需要高度自适应)

2、Layout Element

PreferredWidth

勾选PreferredHeight(通常只需要高度自适应)

3、TextMeshProUGUI 设置

TextMeshProUGUI 锚点设置

image跟text的Pivot的y都设置为1。

三、脚本添加

Image 挂载脚本TextBackgroundAutoSize.cs,把 Text 拖进 textTmp 字段,调整 Padding 数值,控制文字和边框的间距。

cs 复制代码
using UnityEngine;
using TMPro;

public class TextBackgroundAutoSize : MonoBehaviour
{
    [Header("文字")]
    public TextMeshProUGUI textTmp;

    [Header("边距")]
    public float paddingLeft = 20;
    public float paddingRight = 20;
    public float paddingTop = 20;
    public float paddingBottom = 20;

    private RectTransform bgRect;

    void Awake()
    {
        bgRect = GetComponent<RectTransform>();
    }

    void Update()
    {
        AutoResizeBackground();
    }

    void AutoResizeBackground()
    {
        if (!textTmp) return;

        // 强制刷新文本计算
        textTmp.ForceMeshUpdate();

        // 获取文本实际大小
        Vector2 textSize = textTmp.GetRenderedValues(false);

        // 背景大小 = 文本大小 + 内边距
        bgRect.sizeDelta = new Vector2(textSize.x + paddingLeft + paddingRight,textSize.y + paddingTop + paddingBottom);
    }
}
相关推荐
百里香酚兰2 小时前
【Unity学习笔记】如何把粉色Prefab还原
笔记·学习·unity
xcLeigh4 小时前
Unity基础:使用Transform控制物体旋转——Rotate与LookAt详解
unity·教程·transform·rotate·lookat
xy34536 小时前
Axure 9.0 中继器创建与设置步骤
前端·ui·html·axure·原型·产品设计
平行云7 小时前
3D应用推流太贵太慢?ImmerShare Lite:利用本地算力实现极简一键分享
unity·ue5·实时云渲染·云桌面·像素流·云游戏·串流
淡海水8 小时前
11-04-Unity-Span-foreach-LINQ的分配与热路径边界
unity·c#·linq·foreach·span
大蓝头18 小时前
安装包UI美化之路-借助AI快速使用nsNiuniuSkin制作安装包
ui·安装包·nsis·安装包美化·nsniuniuskin
兰亭妙微UI设计公司1 天前
兰亭妙微APP界面设计公司分享: iPhone Duo 登场|3 大核心要点,拆解折叠屏 UI 适配设计思路
ui·交互
灸木1 天前
Unity 多线程与并发:什么时候该用多线程?
unity
智购科技自动售货机工厂1 天前
2026自动售货机端侧AI降本逻辑:从云端API到本地推理的成本重构~YH
人工智能·python·ui·面试·交互
淡海水1 天前
11-02-Unity-Mono-vs-IL2CPP-两种脚本后端的数据结构行为差异
数据结构·unity·游戏引擎·il2cpp·mono