【Unity】プラットフォームやバージョンごとに処理内容を分ける方法
ゲームやアプリの開発において、このプラットフォームには対応していない、このバージョンではこの機能は使えないなど
プラットフォームやUnityのバージョン、さらに言えば端末のバージョンなどでも処理を分ける必要が出てくることがあります。
そこで利用するのがプラットフォーム依存コンパイルです。
docs.unity3d.com
使い方は簡単で、C#のプリプロセッサディレクティブを用いる方法です。
#if UNITY_EDITOR Debug.Log("Unityエディタ"); #elif UNITY_STANDALONE Debug.Log("exe等単独で機能するもの(Win, Mac OSなどあらゆるスタンドアロンプラットフォーム)"); #elif UNITY_IOS Debug.Log("iOS端末"); #elif UNITY_ANDROID Debug.Log("Android端末"); #endif
UnityのBuild SettingsからSwitch Platformすることでどのコードがコンパイルされるかを確認・切り替えることができます。
※Unity-SlnGenを使用することでSwitch Platformを行わなくても、Visual StudioやRider上で確認することもできます。
参考
baba-s.hatenablog.com
補足
Application.platformとRuntimePlatformでアプリが実行されているプラットフォームを確認して処理を分けることもできます。
if (Application.platform == RuntimePlatform.IPhonePlayer) { Debug.Log("iOS端末"); } else if (Application.platform == RuntimePlatform.Android) { Debug.Log("Android端末"); } else { Debug.Log("その他の端末"); }
しかし、種類も少なくコンパイルは通ってしまうというデメリットがあるため、
プリプロセッサディレクティブを用いたプラットフォーム依存コンパイルを行うことを推奨します。