当文本改变统一时触发事件?

时间:2017-03-09 21:39:17

标签: android unity3d textarea unity5

这里文本区域的数量不断变化,我希望在文本区域获得特定数字示例时触发事件我已尝试过这个 -

{{1}}

但它不起作用(它没有读到没有任何反应)。如何匹配条件,因为数字是特定的。请举例解释。提前谢谢。

2 个答案:

答案 0 :(得分:1)

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可以避免在用户输入非数字的内容时引发的任何潜在异常。此方法将获取文本区域中的值,如何获取文本区域,并尝试将文本值解析为浮点数。如果解析成功,则该方法将返回true,否则返回false。

以下是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;
        }
    }  
}

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

希望这就是你所追求的目标。

答案 1 :(得分:0)

Panel已经是Canvas类型,它对同一类型的GetComponent<Canvas>没有任何意义。

尝试使用Panel.enabled = false;

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

编辑:我可以想念单=让我感到困惑。我累了就应该避免回答问题。