うら干物書き

ゲームを作っています。

UnityのCrossPlatformInputを使う その1 Import編

 こんにちは、うら干物です。
 UnityのStandardalonやWebGL向けのゲームを完成した後、このゲームをスマホアプリとして移植したいなぁ、と思ったことはないでしょうか。
 今の私がまさにそれです!
 とはいえ移植するとなると、操作周りを大幅に改良しなければなりません。
 スマホにはコントローラーがありません。キーボードもマウスもありません。あるのはタッチパネルのみ。

 そんなときUnityのStandardAssetに便利そうなAssetがありました。
 その名もCrossPlatformInput
 今回はCrossPlatformInputについてお話ししたいと思います。

 ちなみに今回は話が長くなりそうなので、記事をいくつかに分割しています。


この記事にはUnity5.4.0f3を使用しています。

Importしてみよう

 Unityをインストールする際にStandardAssetの項目にチェックをいれておけば、
Assets > ImportPackage > CrossPlatformInput からImport出来ます。
 もしその項目が無い人はStandardAssetがインストールされていない可能性があるので、Unityのダウンロードページより標準アセットをダウンロードしてインストールすればOKです。

Unity - Update

f:id:urahimono:20160725143313p:plain

CrossPlatformInputをImportすると起こること

 普通AssetをImportしたら、ProjectView上にImportされたAssetが追加されるだけなのですが、CrossPlatformInputの場合は少し変化が起こります。
 Scripting Define SymbolsにDefine値がいくつか自動で追加されてしまうのです!
 追加されるDefine値は以下の通りです。Platformの設定毎に違うので注意です。

  • Standalone:CROSS_PLATFORM_INPUT
    f:id:urahimono:20160725143529p:plain
  • iOS:CROSS_PLATFORM_INPUTMOBILE_INPUT
    f:id:urahimono:20160725143549p:plain
  • Android:CROSS_PLATFORM_INPUTMOBILE_INPUT
    f:id:urahimono:20160725143556p:plain
  • WebGL:追加なし
    f:id:urahimono:20160725143601p:plain

 Define値については後ほど説明します。

 あとメニューにMobile Inputが追加されますよー。

MobileInputメニューについて

 メニュー内にはEnableDisableがあります。
f:id:urahimono:20160725143809p:plain
 この項目でモバイルコントローラーの有効と無効を設定することが出来ます。
 実際指定することで何が変わっているんだ、という点を調べてみたら、iOSAndroidの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_IOSUNITY_ANDROIDといったDefine値で処理は分けられていないため、自分でMOBILE_INPUTを追加や削除をする場合は気を付ける必要があります。
    そしてMOBILE_INPUTがないとPrefab内の重要なGameObjectがActiveにならないため、テストすらできない点にも注意。
    f:id:urahimono:20160725144028p:plain

CrossPlatformInputのPrefabについて

 CrossPlatformInputをImportした際に作られるPrefabをHierarchy上に入れるだけで、簡単にモバイル用コントローラーが出来上がります。
 Prefabは以下の5種類が用意されています。

  • CarTiltControls
  • DualTouchControls
  • MobileAircraftControls
  • MobileSingleStickControl
  • MobileTiltControlRig
    f:id:urahimono:20160725144051p:plain

 次回は各Prefabの使い方についてを説明しますよー。

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp

urahimono.hateblo.jp