この記事でのバージョン
Unity 5.3.4f1 Personal
はじめに
Unityでは各プラットフォーム毎にコンパイルするコードを変えたい場合、
UNITY_EDITORやUNITY_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
なので、もしかしたらそのうち公式に追加されるかも?