文本更改统一时触发事件?

Get an event triggered when text change unity?

这里的文本区域在数字方面不断变化,我想在文本区域获得特定数字时触发一个事件我试过这个 -

 public void myfunction45(Canvas Panel)
{
    if (Indicator = 45) {     
    Panel.enabled = false;.
    }
} //(indicator- www.progress). 

但它不起作用(它不读取它,什么也没有发生)。我如何匹配条件,因为数字是具体的。请举例说明。提前致谢。

Panel已经是Canvas类型,在同类型上GetComponent<Canvas>没有任何意义。

尝试使用 Panel.enabled = false;

对于其余部分,我们不知道您如何获得 Indicator 引用,或者您如何构建 UI 层次结构,因此我们无法评估问题是否存在。

编辑:我能不能错过单曲 = 让我感到困惑哈哈。我应该避免在我累的时候回答问题。

if 语句会给您带来麻烦。

你会想要:

if(Indicator == 5)

相反。在您分配值而不检查它的那一刻,这会导致编译器错误。如果只是打字错误,请更新您的答案,否则会有些混乱。

关于检查文本值。您必须获取文本值,因为您需要对文本区域的引用。此方法假定文本区域具有由用户设置的值。目前您没有抓取任何文本值进行比较,因此 if 语句不知道要比较什么。

这是一种方法:

public void myfunction5(Canvas Panel)
{
    float result;

    string textValue = yourTextArea.text;

    if(Single.TryParse(textValue, out result))
    {
        if(result == Indicator)
        {
             Panel.enabled = false;
        }
    } 
}

您使用 TryParse 来避免在用户输入非数字内容时引发的任何潜在异常。此方法将从您的文本区域获取值,如何获取文本区域由您决定,并尝试将文本值解析为浮点数。如果解析成功,该方法将 return 为真,否则为假。

这是 TryParse 内容的参考: https://msdn.microsoft.com/en-us/library/26sxas5t(v=vs.110).aspx

如果你想将它解析为一个 int,那么你将使用 Int32 版本的 TryParse,https://msdn.microsoft.com/en-us/library/system.int32_methods(v=vs.110).aspx

我还建议在输入字段文档中达到峰值:https://docs.unity3d.com/Manual/script-InputField.html

您可以将您的方法订阅到 Input-fields On Value Changed 事件,不过您的函数需要稍微调整一下:

public void myfunction5(string text)
{
    float result;

    if(Single.TryParse(text, out result))
    {
        if(result == Indicator)
        {
             CachedPanel.enabled = false;
        }
    }  
}

不要忘记存储对要禁用的面板的引用。

希望这就是您所追求的。