こんにちは、今日はUnityでWindows、Mac、Android、iOS等の各プラットフォームごとや、エディタ上で実行されている場合にスクリプトの処理を切り分ける方法についてまとめていきます。
Table of Contents
確認環境
Unity 2018.4.15f1
処理の切り分け方法
処理を切り分けるにはC#の「#if ディレクティブ」でUnityが定義しているシンボルを参照します。
具体的には以下のようなコードになります。
Unityエディタ上で実行している場合のみデバッグログを表示する
#if UNITY_EDITOR
Debug.Log("Running on Unity Editor");
#endif
AndroidまたはiOS上で実行されている場合にそれぞれデバッグログを表示する
#if UNITY_ANDROID
Debug.Log("Running on Android”);
#elif UNITY_IOS
Debug.Log("Running on iOS”);
#endif
コード解説
UNITY_EDITOR、UNITY_ANDROID、UNITY_IOSがUnity側で定義しているシンボルで、UNITY_EDITORはUnityエディタ上で実行されている場合のみ有効になっており、UNITY_ANDROID、UNITY_IOSも同様にそれぞれAndroid, iOS上で実行されている場合に有効になるため、#ifから#endifまたは#elifの間にあるコードのみ実行されます。
そのほかにもビルトインで定義されているシンボルがあり、以下のUnity公式マニュアルに一覧が記載されています。
https://docs.unity3d.com/ja/2018.4/Manual/PlatformDependentCompilation.html
独自のシンボルを定義する
シンボルはプラットフォームごとに独自の定義も追加することができます。
マニュアルの「プラットフォームのカスタム #defines」の項に記載されている通り、Player Settings の Other Settings から Scripting Define Symbols のテキストボックスに任意の文字列を入力すると、その値がシンボルとして定義されます。
複数シンボルを設定する場合はセミコロンで区切ります。