【问题标题】:How would I go about getting the text from all input fields in a scene in Unity 5?我将如何从 Unity 5 场景中的所有输入字段中获取文本?
【发布时间】:2015-07-10 19:11:54
【问题描述】:

截至目前,我的场景中有两个输入字段和一个按钮。单击按钮时,我想检索两个输入字段的内容。我可以通过在它们按钮的单击功能上添加两次相同的脚本来分别获取每个的内容。但是,我想在只使用一个脚本的同时获取两个输入字段。

我尝试过使用 GetComponents,但我想我不明白它是如何工作的。我假设 GetComponents 会获取场景中的所有输入字段并将它们保存到一个数组中。然后我可以循环遍历每个索引并获取每个输入的文本属性。这是不正确的吗?

谢谢!

【问题讨论】:

    标签: c# user-interface unity3d input-field


    【解决方案1】:

    您可以做的是使用 GetComponentsInChildren...将您所有的游戏对象与一个组件 InputField 放在父游戏对象中,然后将您的脚本添加到父游戏对象...

    然后执行以下操作:

    ---编辑: 好的,我在 Inputfields 上玩了一点......所以如果你注意的话,你的 inputfield 有 2 个子对象,一个叫做“Placeholder”,另一个叫做“Text”,它们都有一个 Text 组件,所以你必须做是这样的:

    List<string> textFromMyInputs = new List<string>();
     void GetAllTextFromInputFields()
        {
    
        foreach(InputField inputField in gameObject.GetComponentsInChildren<InputField>())
        {
            foreach (Text text in inputField.GetComponentsInChildren<Text>())
            {
                if (text.gameObject.name != "Placeholder")
                    textFromMyInputs.Add(text.text);
            }
        }
    
        foreach (string s in textFromMyInputs)
        {
            Debug.Log(s);
        }
    }
    

    已经过测试,它对我有用....

    【讨论】:

    • 画布不是已经是 InputFields 的父级了吗?我可以把那个脚本放在画布上吗?另外,我收到一个错误,内容为... Assets/Scripts/getContents.cs(11,85): error CS0119: Expression denotes a 'type', where a 'variable', 'value' or 'method group' was expected
    • 是的,您可以将脚本放在画布中,并查看我在答案中编辑的新代码,它对我有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2022-11-01
    • 2020-11-12
    相关资源
    最近更新 更多