Unity3D C#:如何根据设置为动态的内容调整输入字段的大小

麦克·史里

我有一个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);
Baklap4

您没有指定字体。需要使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

unity3d:如何使用 OpenFolderPanel

来自分类Dev

如何使用Unity Hub安装Unity3D

来自分类Dev

如何使左右按钮工作?Unity3D C#

来自分类Dev

Unity3d中的C#方法覆盖

来自分类Dev

Unity3D C#继承问题

来自分类Dev

:(冒号)在Unity3d的C#中

来自分类Dev

Unity3D C#对象移动

来自分类Dev

Unity3d C#帮助,产生itempickups

来自分类Dev

Unity3D C#无法从类创建obj

来自分类Dev

Unity3D raycasting错误的方向C#

来自分类Dev

Unity3d C#帮助,产生itempickups

来自分类Dev

解析json C#/ unity3d

来自分类Dev

Unity3d中的C#方法覆盖

来自分类Dev

在碰撞 Unity3d C# 上创建贴花

来自分类Dev

Unity3D C# - 文本用户界面

来自分类Dev

C# 事件执行顺序(Unity3D 游戏)

来自分类Dev

使用 . C# unity3d 中的参数

来自分类Dev

Unity3d中导入的精灵的物理大小

来自分类Dev

Unity3D Player大小更改了吗?

来自分类Dev

Unity3d中导入的精灵的物理大小

来自分类Dev

Unity3D Player大小更改了吗?

来自分类Dev

根据HorizontalLayoutGroup等,在Unity3D中更正“ FlowLayoutGroup”

来自分类Dev

使用C#从Unity3D的输入字段中获取文本

来自分类Dev

在C#中提交后,Unity3d清除输入字段

来自分类Dev

使用unity3d创建动态壁纸?

来自分类Dev

在Rect,Unity3D上输入OnMouseEnter

来自分类Dev

通过Xcode设置的Unity3D访问变量

来自分类Dev

设置SourceTree以将Unity3d场景与UnityYAMLMerge合并

来自分类Dev

设置Facebook canvas unity3d的分辨率