ゆーとぴあ。ブログ

技術の備忘録や、日記などを投稿します

【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.platformRuntimePlatformでアプリが実行されているプラットフォームを確認して処理を分けることもできます。

if (Application.platform == RuntimePlatform.IPhonePlayer)
{
    Debug.Log("iOS端末");
}
else if (Application.platform == RuntimePlatform.Android)
{
    Debug.Log("Android端末");
}
else
{
    Debug.Log("その他の端末");
}

しかし、種類も少なくコンパイルは通ってしまうというデメリットがあるため、
プリプロセッサディレクティブを用いたプラットフォーム依存コンパイルを行うことを推奨します。