2017-03-09 5 views
1

ここでテキストエリアは常に数の面で変化していると私はテキスト領域は、私はこれを試してみました特定の数の例を取得するときにイベントをトリガしたい - (テキストが1に変わるとイベントが発生しますか?

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

しかし、それは動作しません、それはありません何も起こらない)。番号が特定のものになるように条件を一致させるにはどうすればいいですか?説明のための例を挙げてください。前もって感謝します。

答えて

1

if文で問題が発生する可能性があります。

あなたは望む:代わりに

if(Indicator == 5) 

。チェックせずに値を割り当てている瞬間に、コンパイラエラーが発生します。それがちょうどタイプミスであれば、答えを更新し、そうでなければ少し混乱させてください。

テキスト値のチェックに関して。テキスト領域を参照する必要があるため、テキスト値を取得する必要があります。このアプローチでは、テキスト領域にユーザーが設定した値があることを前提としています。現在、比較するテキスト値を取得していないため、if文は何を比較するのかわかりません。

は、ここに1つのアプローチです:

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のもののためのリファレンスです:あなたはintにそれを解析したい場合は、 https://msdn.microsoft.com/en-us/library/26sxas5t(v=vs.110).aspx

その後、あなたは私もお勧めしたい、https://msdn.microsoft.com/en-us/library/system.int32_methods(v=vs.110).aspx

をTryParseののInt32のバージョンを使用しているだろう入力フィールドのドキュメントでピークを有する:https://docs.unity3d.com/Manual/script-InputField.html

あなたは値が変更されたイベント上の入力フィールドにあなたの方法を購読することができ、あなたの関数はかかわらず、わずかに微調整する必要があります。

public void myfunction5(string text) 
{ 
    float result; 

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

無効にするパネルへの参照を保存することを忘れないでください。

うまくいけば、これはあなたが後にしていることです。

+0

おかげで..私はこれを試してみます – Deadking66

0

Panelはすでにキャンバスタイプですが、同じタイプのGetComponent<Canvas>には意味がありません。

Panel.enabled = false;を試してみてください。

Indicatorリファレンスの入手方法、またはUI階層の構築方法がわからないため、問題があるかどうか評価できません。

編集:私は単一を逃すことができます=私を笑う。私は疲れたときに質問に答えるのを避けるべきです。

+0

質問を更新します – Deadking66

+0

この方法の外部で何が起こっているのかまだわからないので、スクリプト全体を入力してください。 ifの中に 'Debug.Log'を置いてみたことがありますか?これは決して満たされないかどうか、あるいはCanvasコンポーネントを無効にすることに問題があるかどうかをチェックしましたか?コンポーネントまたはオブジェクトを無効にしようとしていますか?後者の場合は、 'Panel.SetActive(false); 'を使う必要があるので、 – Galandil

+0

私はキャンバスのコンポーネントをオブジェクト自体ではなく無効にしようとしていましたが、両方の方法で動作し、ファイルをダウンロードしています。別のキャンバスはダウンロード完了テキストnイメージを表示します。ここにダウンロードプロセスのコードがあります。 - – Deadking66

関連する問題