【问题标题】:Is it possible to get the game object of the input field I am typing into in Unity?是否可以获取我在 Unity 中输入的输入字段的游戏对象?
【发布时间】:2021-07-19 03:40:56
【问题描述】:

我的统一应用程序中有一个包含多个输入字段的场景,我想在用户输入输入字段时动态更新一些变量。我希望能够只更新与更新的输入字段相对应的变量(不必遍历场景中的所有输入字段并设置所有变量)。有没有办法获取我当前正在输入的输入字段的游戏对象?我有一个函数,我在输入字段中设置为 OnValueChanged 函数,但我现在只记录该字段的当前值: ``` 公共无效输入更新(字符串输入){ 调试日志(输入); } ``` 编辑器中的设置:
[![编辑器设置][1]][1]

谢谢

【问题讨论】:

  • 不知道为什么,但是问题加载时没有任何格式并且在问题的开头缺少“你好”,我尝试编辑它,一旦我在编辑时输入任何内容,它会修复格式,但是然后它仍然奇怪地加载到问题页面上。不知道如何修复它,希望它可以像这样使用(主要部分是解释)。这是一张图片的链接,显示了问题的外观:imgur.com/uWFVQTC

标签: c# unity3d


【解决方案1】:

如果您希望每个输入字段都有特定的游戏对象,我会考虑在代码中分配回调。大致如下:

using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

public class TestScript : MonoBehaviour
{
    [SerializeField] private List<InputField> yourInputFields = new List<InputField>();

    public void Start()
    {
        foreach (InputField input in yourInputFields)
            input.onValueChanged.AddListener(delegate { Test(input.text, input.gameObject); });
    }


    public void Test(string str, GameObject go = null)
    {
        Debug.Log(go.name + " " + str);
    }
}

函数Test 现在将使用分配在Start 中的特定游戏对象来调用,该游戏对象与特定的InputField onValueChange 相关联。只需将要在检查器中使用此回调的每个 InputField 分配到公开列表中即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多