本文主要是介绍Unity InputField宽度自适应内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在Unity中,InputField在我们输入内容时,只会显示适应初始宽度的最新内容,或者自定义长度内容。
那么,要实现宽度自适应内容就需要另寻他法了。
以下是通过一个控制脚本来实现的一个简单方法。
直接上脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;public class DynamicInputFieldSize : MonoBehaviour
{public TMP_InputField inputField;public RectTransform inputFieldRect;private float initialWidth;private float characterWidth = 20f;void Start(){// 获取输入框的初始宽度initialWidth = inputFieldRect.sizeDelta.x;// 监听输入框文本变化事件inputField.onValueChanged.AddListener(OnInputValueChanged);}void OnInputValueChanged(string text){// 设置输入框文本内容inputField.text = text;// 获取文本的预期宽度TMP_Text textComponent = inputField.textComponent;float minWidth = textComponent.GetPreferredValues(text).x + characterWidth; // 判断文本内容是否超过初始宽度if (minWidth > initialWidth){// 调整输入框的宽度inputFieldRect.sizeDelta = new Vector2(minWidth, inputFieldRect.sizeDelta.y);}else{// 将输入框宽度恢复为初始宽度inputFieldRect.sizeDelta = new Vector2(initialWidth, inputFieldRect.sizeDelta.y);}}
}
该控制脚本的方法原理很简单,就是通过获取文本长度,然后调整输入框的宽度来实现。
效果:
Unity InputField宽度自适应内容
这篇关于Unity InputField宽度自适应内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!