【unity】代码控制文本框根据字数实时调整大小

这篇具有很好参考价值的文章主要介绍了【unity】代码控制文本框根据字数实时调整大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

创建文本框

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

添加一个面板(图中灰色部分),在面板中再添加一个文本框,调整他们的位置和大小。面板的轴心设置为(0,1)。
【unity】代码控制文本框根据字数实时调整大小
【unity】代码控制文本框根据字数实时调整大小

代码

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

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;
    }
}

将脚本挂在对象上,拖入面板和文本框。根据实际情况调整参数。
【unity】代码控制文本框根据字数实时调整大小

运行游戏进行测试

【unity】代码控制文本框根据字数实时调整大小
希望以上内容能给你带来帮助

编程小白一枚,欢迎找我一起交流学习。B站ID:MungRed文章来源地址https://www.toymoban.com/news/detail-503787.html

到了这里,关于【unity】代码控制文本框根据字数实时调整大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包