这里只考虑竖直方向的滑动,水平方向同理。
思路是把InputField放到ScrollView下,让InputField作为ScrollRect的Content。动态获取输入的文字的高度(InputField.preferredHeight),然后改变InputField的RectTransform高度。
代码参考
using UnityEngine;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
public InputField inputField;
private RectTransform inputFieldRectTrans;
private float originHeight;
public void Awake()
{
inputFieldRectTrans = inputField.GetComponent<RectTransform>();
originHeight = inputFieldRectTrans.sizeDelta.y;
inputField.onValueChanged.AddListener(str =>
{
if (inputField.preferredHeight > originHeight || inputFieldRectTrans.sizeDelta.y >= originHeight)
{
// 加上20是防止高度太小InputField显示Text不全,最上边会被InputField截取一部分,根据实际效果修改该数字
var newHeight = Mathf.Max(originHeight, inputField.preferredHeight + 20);
inputFieldRectTrans.sizeDelta = new Vector2(inputFieldRectTrans.sizeDelta.x, newHeight);
}
});
}
}