徳島ゲーム開発ごっこ 技術ブログ

ゲームを作るために役に立ったり立たなかったりする技術を学んでいきます!

【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