2017-03-09 42 views
1

这里的文本区域在许多方面是不断变化的,我希望在文本区域得到我已经试过这一个特定的号码例如触发一个事件 -获取文本更改统一时触发的事件吗?

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

但它不工作(它不读它没有任何反应)。由于数字具体,我该如何匹配条件。请举例说明。提前致谢。

回答

1

如果声明会导致你的问题。

你会想:

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

您可以订阅你的方法输入字段论价值Changed事件,你的函数将需要略微调整了,虽然:

01在输入字段文档具有峰值
public void myfunction5(string text) 
{ 
    float result; 

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

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

希望这是你所追求的。

+0

感谢您的答复..我会尝试了这一点 – Deadking66

0

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

尝试使用Panel.enabled = false;。其他的我们不知道你是如何得到Indicator的参考资料,或者你是如何构建UI层次结构的,所以我们不能评估问题是否存在。

编辑:我可以错过单=挡我的哈哈。当我累了时,我应该避免回答问题。

+0

我将更新问题 – Deadking66

+0

我们仍然不知道此方法之外发生了什么,请提供整个脚本。你是否尝试过在内部放置一个'Debug.Log'来检查它是否从未被满足,或者如果禁用Canvas组件有问题?你是否试图禁用组件或对象?因为对于后者,你需要使用'Panel.SetActive(false);' – Galandil

+0

我试图禁用画布的组件,而不是对象本身,但它工作的方式和我正在下载文件,并在其完整下载,我想显示另一个画布显示下载完整文本图像。这里是下载过程的代码 - – Deadking66