我正在尝试通过 C# 中的脚本创建一个 "UnityEngine.UI.InputField"。由于 Unity API 文档在代码示例方面非常缺乏,因此就像绑在脚上的石头一样有用,我试图从编辑器中添加的 InputField 重新创建它。
我有
一切看起来都很好,但输入不起作用。单击该字段似乎没有任何作用。
还需要做什么才能使其正常工作,以便文本输入正常工作?
编辑: 忘记提及:手动放置的 InputField 在运行时获得 InputField Input Caret 子对象。但是我的 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;
最佳答案
弄清楚了。运行它的 Canvas 需要一个 GraphicsRaycaster 组件。
关于c# - unity : How do you create a fully working InputField in C#?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32499320/