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

我有

  • 创建了 InputField,
  • 为背景添加了一个 Image 组件,
  • a 文本 组件用于实际输入文本和
  • a 占位符的文本
  • 我还在我的场景中添加了一个 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;
    

    最佳答案

    弄清楚了。运行它的 Canvas 需要一个 GraphicsRaycaster 组件。

    关于c# - unity : How do you create a fully working InputField in C#?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32499320/

    10-12 17:08