这里文本区域的数量不断变化,我希望在文本区域获得特定数字示例时触发事件我已尝试过这个 -
{{1}}
但它不起作用(它没有读到没有任何反应)。如何匹配条件,因为数字是特定的。请举例解释。提前谢谢。
答案 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层次结构的,因此我们无法评估问题是否存在。
编辑:我可以想念单=
让我感到困惑。我累了就应该避免回答问题。