我有一个InputField,当从服务器取回字符串时,将在其中填充文本。我们可以调试整个文本,以便我们正确接收它。但是,文本太长,无法放入我们的InputField中。我基本需要的是由unity提供的内容大小调整器的思想(按设计,InputFields不支持Content Size Fitter)目前,我们正在尝试使用以下代码片段更新InputField的大小。
var x = new GUIStyle();
var rectTransform = pvText.GetComponent<RectTransform>();
var words = pvText.text.Split(' ');
var currentWidth = 0f;
var currentHeight = 0f;
foreach (var word in words)
{
var size = x.CalcSize(new GUIContent(word + "A"));
var height = x.CalcHeight(new GUIContent(word), size.x);
currentWidth += size.x;
if (currentWidth >= rectTransform.sizeDelta.x)
{
currentWidth = size.x;
currentHeight += height + pvText.textComponent.lineSpacing;
}
}
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, currentHeight);
您没有指定字体。需要使用font和fontsize来计算正确的高度。
var x = new GUIStyle
{
font = pvText.textComponent.font,
fontSize = pvText.textComponent.fontSize
};
var rectTransform = pvText.GetComponent<RectTransform>();
var words = pvText.text.Split(' ');
var currentWidth = 0f;
var currentHeight = 0f;
foreach (var word in words)
{
var size = x.CalcSize(new GUIContent(word + "A"));
var height = x.CalcHeight(new GUIContent(word), size.x);
currentWidth += size.x;
if (currentWidth >= rectTransform.sizeDelta.x)
{
currentWidth = size.x;
currentHeight += height + pvText.textComponent.lineSpacing;
}
}
rectTransform.sizeDelta = new Vector2(rectTransform.sizeDelta.x, currentHeight);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句