找回密码
 注册帐号

扫一扫,访问微社区

随幻Kaller

Unity Text文本自适应 最小/最大宽度 最小/最大高度

214 2019-1-31 11:31 |个人分类:C# 脚本

Text 水平方向来说 一个需求:
如果没有文字 则宽度是 100  当文字输入过程中 如果宽度 > 100 < 300 则自适应 > 300 则剩下的文字忽略掉
垂直方向亦是如此
以下列出一种解决的简单方案
在 Text 上挂 3 个脚本 ContentSizeFitter LayoutElement TextAutoFit(之后列出)
ContentSizeFitter 都设置成: PreferredSize
LayoutElement 中 MinWidth MinHeight 打上勾 设置成 100
TextAutoFit 代码如下:

[code]csharpcode:

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

public class TextAutoFit : MonoBehaviour
{
    Text m_text;
    ContentSizeFitter fitter;
    LayoutElement layout;
    // Use this for initialization
    void Start()
    {
        m_text = GetComponent<Text>();
        fitter = this.GetComponent<ContentSizeFitter>();
        layout = this.GetComponent<LayoutElement>();
    }

    // Update is called once per frame
    void Update()
    {
        float curTextWidth = m_text.preferredWidth;
        if (curTextWidth > layout.minWidth * 3f)
            fitter.horizontalFit = ContentSizeFitter.FitMode.Unconstrained;
        else
            fitter.horizontalFit = ContentSizeFitter.FitMode.PreferredSize;


        float curTextHeight = m_text.preferredHeight;
        if (curTextHeight > layout.minHeight * 3f)
            fitter.verticalFit = ContentSizeFitter.FitMode.Unconstrained;
        else
            fitter.verticalFit = ContentSizeFitter.FitMode.PreferredSize;



    }
}

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号