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);
    }
}
相关推荐
Larry_Yanan13 小时前
QML面试常见问题(一)QML中组件呈现方式的方法有哪些
开发语言·c++·qt·ui·面试
测试员周周16 小时前
【Appium 系列】第12节-智能路由 — API测试 vs UI 测试的自动选择
开发语言·人工智能·python·功能测试·ui·appium·测试用例
BU摆烂会噶17 小时前
【LangGraph】节点内调用与状态隔离
android·人工智能·python·ui·langchain·人机交互
努力努力再努力wz18 小时前
【C++高阶数据结构系列】:时间轮定时器详解:原理分析与代码实现,带你从零手撕时间轮!(附时间轮的实现源码)
c语言·开发语言·数据结构·c++·qt·算法·ui
598866753@qq.com18 小时前
Unity Job System笔记
unity
ZC跨境爬虫18 小时前
跟着 MDN 学 HTML day_58:(构建行星数据表——HTML表格高级实战指南)
前端·javascript·ui·html·音视频
BU摆烂会噶18 小时前
【LangGraph】作为节点添加与状态共享
android·人工智能·python·ui·langchain·人机交互
winlife_20 小时前
Funplay Unity MCP 与 Unity AI Assistant 详细对比:开源 MCP 工具集 vs 官方全栈 AI 产品
人工智能·unity·开源·ai编程·claude·mcp
ZC跨境爬虫20 小时前
跟着 MDN 学 HTML day_60:(表单与按钮技能测试实战)
服务器·前端·javascript·数据库·ui·html
御水流红叶20 小时前
Android-Unity游戏逆向思路
android·游戏·unity