我在尝试使用 Unity 的 Text Mesh Pro 输入字段 UI 元素时遇到了奇怪的问题。我实际上不知道布局是否导致它。
我有一个滚动视图,它使用垂直布局来组织内容对象下的对象。滚动视图中的每个对象内部都有一个水平布局,可以容纳两个相邻的输入字段,因此基本上滚动视图有两列输入字段。
但是,我从输入字段中得到了奇怪的行为。当我开始输入时,它不会显示输入,直到我输入两个字符(即我输入'0',它什么也不显示,然后我输入另一个'0',它会显示'00')。此外,我有一些代码可以自动使用默认值填充输入字段,下面是我如何执行此操作的示例:
gameObject.GetComponent<TMP_InputField>().text = numVal.ToString();
但是这些值永远不会出现,但我可以通过在游戏运行时检查检查器窗口来确认它们正在被填充。在 TMP_Input Field 组件下,“文本”字段显示正确的值,但我在输入框中看不到它。
我没有收到任何错误或警告。
是滚动视图还是分层布局混淆了输入字段的脚本?还有什么?感谢任何建议、帮助和问题。
编辑:
我发现它可能与将对象添加到滚动视图的方式有关。滚动视图的内容(具有垂直布局)在运行时获取添加到其中的对象。这是通过实例化预制件来完成的。
Instantiate(DoubleInputNodePrefab, contentObject.transform);
这个预制对象有水平布局和两个孩子,每个孩子都有一个输入字段。如果我在运行游戏之前将此预制件添加到内容窗口,它可以正常工作(预计我的预期代码都不起作用,因为它依赖于模块化添加和删除这些对象)但我可以提供输入并且它看起来很好。
解决方法:我不会认为这是一个解决方案,但这是我现在要解决的问题。使用“普通”输入字段而不是 Text Mesh Pro 不会产生相同的问题并且可以按预期工作。