(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発したゲームです!


モバイルの時だけ有効になるDefine、UNITY_MOBILEを宣言してみる【Unity】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 5.3.4f1 Personal


はじめに

Unityでは各プラットフォーム毎にコンパイルするコードを変えたい場合

UNITY_EDITORUNITY_ANDROIDなどのDefineを使って切り替えを行います。

#if UNITY_IOS
//対象プラットフォームがiOSの時だけコンパイルされる	
#elif UNITY_ANDROID
//対象プラットフォームがAndroidの時だけコンパイルされる
#endif


ただ、このプラットフォーム毎のDefineの中に

モバイルの時だけ有効になるDefineはありません



なので、モバイルの時だけ有効になるDefine、UNITY_MOBILEを宣言してみました。


UNITY_MOBILE

以下のようなコードをスクリプトと最上部(usingより上)に記載すると、

モバイルの時だけMOBILE_DEVICEというdefineが宣言されます。

//Unityエディター or スタンドアローン(Mac, Win, Linux) or WebGL or WebPlayeの時はMOBILE_DEVICEを宣言しない
#if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBGL || UNITY_WEBPLAYER
#undef MOBILE_DEVICE
#else
#define MOBILE_DEVICE
#endif


使う時は以下のような感じ。

#if MOBILE_DEVICE
//モバイルデバイスの時だけ実行されるはず
#endif


使い所としては、ネイティブ連携用のプラグインなんかで使えるんじゃないでしょうか。


ただ一点注意なのが、defineは宣言したスクリプト内でのみでしか有効にならないことです。

つまり、MOBILE_DEVICEが必要な全スクリプトに宣言を書く必要があります。


おわりに

余談ですが、UNITY_MOBILEについて要望自体はUnityにあがってるみたいです。


https://feedback.unity3d.com/suggestions/add-new-number-define-unity-mobile


なので、もしかしたらそのうち公式に追加されるかも?