2016-06-19 4 views
2

私は同じ色のオブジェクトを選択しなければならないユニティを使って2Dゲームを作っています。今度は、ユーザーが4秒以上色を選択できないときにヒントを表示します。5秒以上非アクティブになっているときにヒントを表示するにはどうすればいいですか?

キャンディークラッシュヒント表示システムでは、ユーザーが任意の組み合わせを識別できない場合に、キャンディークラッシュがヒントを示すシステムを表示します。

私はヒントを表示できるように、ユーザーが非アクティブであるかどうかを見つける方法を見つけることができません。

誰かが私を助けてくれたら本当に感謝しています。前もって感謝します。

+1

答えに正しいと印を付けてください、2つの正しいものがあります... – matiaslauriti

答えて

1

私はあなたがあなたのコードのどこにでも電話する必要があることに同意しません。ユーザーが行うことができるのは、キーボードのキーを押す(ゲームパッドやコントローラーもカウントする)か、マウスを動かすことです(モバイルマウスでも同様に動作します)。したがって、次のような単一のクラスがある場合は、

using UnityEngine; 
public class TestInActive : MonoBehaviour { 
    private Vector3 prevMousePosition = Vector3.zero; 
    void ShowGameHintInvoke() 
    { 
     CancelInvoke(); 
     Invoke("GameHint", 5); 
    } 
    void GameHint() 
    { 
     Debug.Log("This is a Hint"); 
    } 
    // Update is called once per frame 
    void Update() { 
     if (Input.anyKeyDown || Input.mousePosition != prevMousePosition) 
      ShowGameHintInvoke(); 
     prevMousePosition = Input.mousePosition; 
    } 
} 

うまくいくはずです。これは、ユーザーが5秒間非アクティブになった後に、ShowGameHintInvoke()を1回呼び出します。その後、ユーザーが何かをするまで、再び呼び出されません。

+0

これは絶対に良いアイデアです - OPは確かにこれを行う必要があります! – Fattie

0

あなたはDateTimeタイプを使用してUpdateにそれを設定し、そのユーザーのdoesntが何かをするときDateTime(今)と保存されたDateTimeが、差は5秒以上か等しい場合、あなたはあなたが表示さそこに、すべてのフレームを見ることができます。

ユーザーがタッチした場合、ユーザーはそれを行ったとフラグを付けます。次のフレームでは、彼は接触していないことがわかります。DateTimeを設定して、5秒を超えると表示されます。

私の言いたいことは分かりますか?

5秒の歩留まりでコルーチンを使用することができます(WaitForSeconds)、5秒間置いて、歩留まりを続けるとヒントを表示します。

関連する問題