LoginSignup
1

More than 5 years have passed since last update.

Unity RemoteでのプレイはApplication.isEditor = true だよ、というメモ

Last updated at Posted at 2016-04-23

作ったスクリプトをスマホで軽く検証したい、というときにUnity Remoteが便利ですが、初心者がその時にちょっと陥ってしまったメモ

Application.isEditor

Unityのエディタ上で動いているときはtrueを返すbool値です。
「スマホではスマホ用の操作をしたいけど、エディタ上ではキーボードで動きの確認をしたい」というときに使います。

C#
/// Editorで起動しているときはキーボード操作を可能にし、そうじゃないときはスマホのジャイロで動かす
if (Application.isEditor) { 
    move.x += Input.GetAxis ("Horizontal") * 3.0f; /// Vector3 moveは別に記述、数字は適当
    if(Input.GetKeyDown("space")) Jump(); /// void Jump()は別に記述
} else {
    move.x = Input.gyro.gravity.x * 12.0f; /// スマホを傾けると左右に移動、数字は適当
    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) {Jump ();} ///タップするとジャンプ
}

エディタで操作しているときは左右キーでx軸方向移動、Spaceキーでジャンプ。
実機で操作しているときは傾けてx軸方向移動、タップでジャンプ。

なのですが、このscriptだとUnityRemoteで動きません。エラーも起きないので1時間ほどハマってしまいました。
なぜかというと、UnityRemoteもエディタから起動するので、 Application.isEditor = true になるからです。普通に考えたら当たり前です。

なのでこのようにしました。

C#
/// Editorで起動しているときはキーボードでもスマホでも操作可能にする。 そうじゃないときはキーボードでは操作できない。
move.x = Input.gyro.gravity.x * 12.0f; 
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began) {Jump ();} 
if (Application.isEditor) { 
    move.x += Input.GetAxis ("Horizontal") * 3.0f;
    if(Input.GetKeyDown("space")) Jump();
}

elseを取っただけです。
あと、Input.gyro.gravity.xInput.GetAxis("Horizontal")を上書きしないよう、記述の順序を変えました。
これでUnityRemote(スマホ)でもキーボードでも無事に動作するようになりました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1