微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unity:如何在C#中创建一个完全可用的InputField?

我正在尝试通过C#中的脚本创建“ UnityEngine.UI.InputField”.由于Unity api文档代码示例方面极度缺乏,因此像固定在石头上一样有用,因此我尝试从编辑器中添加的InputField重新创建它.

我有

>创建InputField,
>添加了背景图片组件,
>用于实际输入文本的文本组件,并且
>占位符的文本.
>我还向场景添加一个EventSystem.

一切看起来都不错,但输入无效.单击该字段似乎没有任何作用.

为了使此功能正常工作,还需要做什么以使文本输入有效?

编辑:忘记提及:手动放置的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;

解决方法:

弄清楚了.在其上运行的画布需要GraphicsRaycaster组件.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐