Unity:如何在c#中创建一个完整的InputField

本文关键字:一个 InputField 创建 Unity | 更新日期: 2023-09-27 18:12:19

我试图创建一个"UnityEngine.UI。在c#中通过脚本输入""。由于Unity API文档在代码示例方面极度缺乏,因此就像拴在脚上的石头一样有用,我试图从编辑器中添加的InputField重新创建它。

我有

  • 创建InputField,
  • 为背景添加了Image组件,
  • 一个Text组件,用于实际输入文本和
  • a 占位符的文本
  • 我还添加了一个EventSystem到我的场景。

一切看起来都很好,但输入不工作。点击这个字段似乎没有任何作用。

还需要做什么才能使这个正常工作,以便文本输入工作?

EDIT:忘了提:手动放置的InputField在运行时获得一个InputField Input插入符号子对象。但是我的c# InputField不会自动得到这个。这个怎么加呢?

GameObject container = new GameObject();
container.name = "InputField";
container.transform.parent = _console.transform;
container.AddComponent<CanvasRenderer>();
_image = container.AddComponent<Image>();
_image.color = Utils.HexToColor32("0000000A");
GameObject textContainer = new GameObject();
textContainer.name = "Text";
textContainer.transform.parent = container.transform;
_text = textContainer.AddComponent<Text>();
_text.supportRichText = false;
_text.color = _console.colorText;
_text.font = _console.fontFace;
_text.fontSize = _console.fontSize;
_text.horizontalOverflow = HorizontalWrapMode.Overflow;
GameObject placeholderContainer = new GameObject();
placeholderContainer.name = "Placeholder";
placeholderContainer.transform.parent = container.transform;
_placeholder = placeholderContainer.AddComponent<Text>();
_placeholder.color = new Color(_console.colorText.r, _console.colorText.g, _console.colorText.b, _console.colorText.a / 2);
_placeholder.font = _console.fontFace;
_placeholder.fontSize = _console.fontSize;
_placeholder.fontStyle = FontStyle.Italic;
_placeholder.supportRichText = false;
_placeholder.horizontalOverflow = HorizontalWrapMode.Overflow;
_placeholder.text = "Enter command ...";
_inputField = container.AddComponent<InputField>();
_inputField.targetGraphic = _image;
_inputField.textComponent = _text;
_inputField.placeholder = _placeholder;

Unity:如何在c#中创建一个完整的InputField

明白了。它运行的画布需要一个GraphicsRaycaster组件。