2017-07-07 5 views
0

でユニティゲームが実行されているかどうかを検出する方法は、基本的に、モバイルデバイスの物理キーボードとタッチスクリーンでサポートされているユニティゲームがあります。私はすでに物理的なキーボードのための私の動きのスクリプトを終えました、そして今、私はタッチスクリーンのためにコーディングしています。(ウェブキーボード)または(モバイルタッチ)

どうすればその機能を検出できますか?

私はそのような何かを考えていた...

private void HandleInput() 
{ 
    if (detect if physical keyboard here...) 
    { 

     if (Input.GetKey(KeyCode.RightArrow)) 
     { 
      _normalizedHorizontalSpeed = 1; 
     } 
     else if (Input.GetKey(KeyCode.LeftArrow)) 
     { 
      _normalizedHorizontalSpeed = -1; 
     } 
    } else if (detect touch screen here...) 
    { 
     for (int i = 0; i < Input.touchCount; ++i) 
     { 
      if (Input.GetTouch(i).phase == TouchPhase.Began) 
      { 
      some code here... 
      } 
     } 
    } 
} 

あなたはApplication.platformを探している

答えて

1

@ryemossで与えられた解決策は素晴らしいですが、小切手はランタイムで評価されます。毎フレームのチェックを避けたい場合は、Platform dependent compilationを使用することをお勧めします。プリプロセッサディレクティブのおかげで、唯一の希望のコードは、ターゲットプラットフォーム

#if UNITY_IOS || UNITY_ANDROID || UNITY_WP_8_1 
    for (int i = 0; i < Input.touchCount; ++i) 
    { 
     if (Input.GetTouch(i).phase == TouchPhase.Began) 
     { 
     some code here... 
     } 
    } 
#else 
    if (Input.GetKey(KeyCode.RightArrow)) 
    { 
     _normalizedHorizontalSpeed = 1; 
    } 
    else if (Input.GetKey(KeyCode.LeftArrow)) 
    { 
     _normalizedHorizontalSpeed = -1; 
    } 
#endif 

に応じてアプリケーションにコンパイルされますが、この方法は、あなたがUnityがリモート使用している場合は困難エディタでデバッグすることができますことに注意してください。

+0

@ Pablo-darde:どのようなフィードバックもコミュニティにとって非常に高く評価されています。 – Hellium

+0

助けてくれてありがとう@Hellium –

0

を感謝しています。 次のようなものは、あなたが探しているものを達成するか、より多くのデバイスのためにhereを読んでください。

if (Application.platform == RuntimePlatform.WindowsPlayer) 
    Debug.Log("Do something special here"); 
else if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer) 
    Debug.Log("Do something else here"); 

しかし、このチェックは冗長であるため、一掃する方が良いかもしれません。右または左の矢印を押すと、ユーザーはキーボードを使用していることをすでに知っています。

+0

あなたのお返事ありがとう@ryemoss –

関連する問題