当前位置:   article > 正文

【unity】代码控制文本框根据字数实时调整大小_unity 文字框大小随字体多少改变

unity 文字框大小随字体多少改变

最近想要实现游戏中对话文本框根据字数实时调整大小的功能,在网上没找到合适的教程,故自己简单地实现了一下,在这里分享一下自己的思路。

创建文本框

创建UI画布,设置为根据屏幕大小缩放。

添加一个面板(图中灰色部分),在面板中再添加一个文本框,调整他们的位置和大小。面板的轴心设置为(0,1)。
请添加图片描述
请添加图片描述

代码

主要思路为:设定每一行最多字数以及每一行的高度,再根据当前字数对面板的大小进行调整。
需要注意的是,由于英文字符的宽度小于汉字,所以获取字数的时候需要考虑他们比例。
在脚本中添加如下代码

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

public class TextAutoZoom : MonoBehaviour
{
    public Text text;
    public GameObject plane;

    public int LineMaxNum;//每一行最多字数
    public float LineMinWidth;//一行最小长度
    public float LineMinHeight;//一行最小高度
    public float LineDertaWidth;//每个字增加的长度
    public float LineDertaHeight;//每一行增加的高度

    public float len;//当前字数
    public float zoom;//非汉字的比例

    public void Update()
    {
        len = GetLength(text.text);
        if (len <= LineMaxNum)
        {
            plane.GetComponent<RectTransform>().sizeDelta = 
            new Vector2(LineMinWidth + LineDertaWidth * len, LineMinHeight);
        }
        else
        {
            plane.GetComponent<RectTransform>().sizeDelta =
            new Vector2(LineMinWidth+LineDertaWidth*LineMaxNum,LineMinHeight+LineDertaHeight* (int)(len/LineMaxNum));
        }
    }
    //获得字符串的"长度"
    public float GetLength(string str)
    {
        float res = 0;
        for (int i = 0; i < str.Length; i++)
        {
            if (str[i] < 127)
            {
                res += zoom;
            }
            else
            {
                res += 1f;
            }
        }
        return res;
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

将脚本挂在对象上,拖入面板和文本框。根据实际情况调整参数。
请添加图片描述

运行游戏进行测试

在这里插入图片描述
希望以上内容能给你带来帮助

编程小白一枚,欢迎找我一起交流学习。B站ID:MungRed

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/496839
推荐阅读
相关标签
  

闽ICP备14008679号