こんにちは、うら干物です。
UnityのStandardalonやWebGL向けのゲームを完成した後、このゲームをスマホアプリとして移植したいなぁ、と思ったことはないでしょうか。
今の私がまさにそれです!
とはいえ移植するとなると、操作周りを大幅に改良しなければなりません。
スマホにはコントローラーがありません。キーボードもマウスもありません。あるのはタッチパネルのみ。
そんなときUnityのStandardAssetに便利そうなAssetがありました。
その名もCrossPlatformInput。
今回はCrossPlatformInputについてお話ししたいと思います。
ちなみに今回は話が長くなりそうなので、記事をいくつかに分割しています。
この記事にはUnity5.4.0f3を使用しています。
- Importしてみよう
- CrossPlatformInputをImportすると起こること
- MobileInputメニューについて
- 追加されるDefine値について
- CrossPlatformInputを使う際の注意点
- CrossPlatformInputのPrefabについて
Importしてみよう
Unityをインストールする際にStandardAssetの項目にチェックをいれておけば、
Assets > ImportPackage > CrossPlatformInput からImport出来ます。
もしその項目が無い人はStandardAssetがインストールされていない可能性があるので、Unityのダウンロードページより標準アセットをダウンロードしてインストールすればOKです。
CrossPlatformInputをImportすると起こること
普通AssetをImportしたら、ProjectView上にImportされたAssetが追加されるだけなのですが、CrossPlatformInputの場合は少し変化が起こります。
Scripting Define SymbolsにDefine値がいくつか自動で追加されてしまうのです!
追加されるDefine値は以下の通りです。Platformの設定毎に違うので注意です。
- Standalone:CROSS_PLATFORM_INPUT
- iOS:CROSS_PLATFORM_INPUT と MOBILE_INPUT
- Android:CROSS_PLATFORM_INPUT と MOBILE_INPUT
- WebGL:追加なし
Define値については後ほど説明します。
あとメニューにMobile Inputが追加されますよー。
MobileInputメニューについて
メニュー内にはEnableとDisableがあります。
この項目でモバイルコントローラーの有効と無効を設定することが出来ます。
実際指定することで何が変わっているんだ、という点を調べてみたら、iOSとAndroidのScriptingDefineSymbolsにMOBILE_INPUTを追加削除しているだけでした。
追加されるDefine値について
CrossPlatformInputで使われるDefine値は以下の2つがあります。
- CROSS_PLATFORM_INPUT
調べてみても、スクリプト内で使っている個所がない!
CrossPlatformInputのアセットを使っているという証的なものなのでしょうか……。 - MOBILE_INPUT
Mobile専用のInput制御を使用できるようになります。
MobileControlRigのアタッチされたGameObjectが有効になったりします。
CrossPlatformInputを使う際の注意点
- Mobile Inputの切り替え時
上記で説明した通りMobile InputのメニューのEnableとDisableの切り替えはMOBILE_INPUTのDefine値の追加と削除を行うので、ソリューションファイルの再読み込みがかかってしまいます。 - CrossPlatformInputはMOBILE_INPUTのDefine値の有無が使用の有無を分ける
UNITY_IOSやUNITY_ANDROIDといったDefine値で処理は分けられていないため、自分でMOBILE_INPUTを追加や削除をする場合は気を付ける必要があります。
そしてMOBILE_INPUTがないとPrefab内の重要なGameObjectがActiveにならないため、テストすらできない点にも注意。
CrossPlatformInputのPrefabについて
CrossPlatformInputをImportした際に作られるPrefabをHierarchy上に入れるだけで、簡単にモバイル用コントローラーが出来上がります。
Prefabは以下の5種類が用意されています。
- CarTiltControls
- DualTouchControls
- MobileAircraftControls
- MobileSingleStickControl
- MobileTiltControlRig
次回は各Prefabの使い方についてを説明しますよー。