2017-03-09 47 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