2017-12-01 4 views
0

ここに私のコードです。それはうまく動作します。ユーザーはUIボタンからの入力を行います - 彼はコルーチン(3,5、tcs)でどれくらい待っていますか。しかし、問題は、ユーザーがUIボタンから待つ時間を入力するのを忘れた場合、 "do something"の下のコードが実行されないことです。 waitingTime.textがnullの場合== は、[既定の時間を使い、コルーチンのNULL待ち時間を確認しますか?

他3.0F を:: は、私は次のロジックを実行しようとしました使用時間のユーザーが

に入っている。しかし、私のコードは全く動作を停止しました。正しく実装する方法はありますか?提案ありがとう!

public InputField waitingTime; // input from user. 


    public void Start() 
    { 
     StartCoroutine(Routine()); 

    } 

    public void Update() 
    { 
     StopCoroutine(Routine()); 
    } 


    IEnumerator Routine() 
    { 
     for (;;) { 

      float t = float.Parse (waitingTime.text); 
      Debug.LogWarning ("Wait for: " + t + "sec"); 

      // Do something 

     } 
    } 
+0

を修正すべきだと思う、私は返すようにルーチンで逃した:収率は新しいWaitForSeconds(t)を返します。 –

答えて

1

あなたのコードの目的はちょっと不明であるので、あなたの目標に広い視野を持つことは解決策を提供するために、大きな助けになるでしょう。とにかく、私はこれは申し訳ありませんが、いくつかの問題...

while (true) // hey, we are gentlemen after all... 
{ 
    Single t; 

    if (!Single.TryParse(waitingTime.text, out t)) 
     t = 3.0f; 

    Debug.LogWarning("Waiting for " + t.ToString() + "seconds..."); 

    // Do something 
} 
+0

'スリープ 'はマルチスレッド用です。コルーチンは['yield'](https://docs.unity3d.com/351/Documentation/ScriptReference/index.Coroutines_26_Yield.html)を使用します。コルーチンはスレッドではありません。 – Draco18s

+0

私は、ユーザーがUI入力フィールドから入力する返品時間です。しかし、ユーザーが入力したくない、または入力を忘れた場合、デフォルト値として時間値を使用します。私は毎秒ではなく、毎回フレームアップデートを取得しようとしています。入力がない場合、秒ごとにフレームをキャプチャします。 –

関連する問題