3テラバイト

プログラム関連備忘録サイト。主にゲーム。

Unity

Unity – プラットフォームやエディタ等の実行環境ごとに処理を切り分ける方法

投稿日:

こんにちは、今日はUnityでWindows、Mac、Android、iOS等の各プラットフォームごとや、エディタ上で実行されている場合にスクリプトの処理を切り分ける方法についてまとめていきます。

確認環境

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 のテキストボックスに任意の文字列を入力すると、その値がシンボルとして定義されます。

複数シンボルを設定する場合はセミコロンで区切ります。

-Unity


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

関連記事

no image

UnityでuGUIのButtonサイズを子のTextのサイズに自動で合わせる

こんにちは、今日はUnityのuGUIでButtonのサイズを、子オブジェクトのTextのサイズに合わせて変更する方法についてまとめていきます。 確認環境 Version 2018.4.15f1 実装 …

no image

Unityでアプリケーションのフルスクリーン切り替えキーを無効にする方法

こんにちは、今日はUnityでアプリケーションのフルスクリーン切り替えキーを無効にする方法についてまとめていきます。 確認環境 Unity 2018.4.15f1 フルスクリーン切り替えキーの有効/無 …

no image

Unityでカーソルの表示、ロック、画像の切り替えをする

こんにちは、今日はUnityでカーソルの表示、ロック、画像の切り替えをする方法についてまとめていきます。 確認環境 Unity 2018.4.15f1 カーソルの表示、非表示 表示 Cursor.vi …

no image

Unityで0から指定範囲の間を行き来する数値を取得できる関数Mathf.PingPong

確認環境 Unity 2018.4.15f1 使い方 public static float PingPong(float t, float length); UnityEngine.Mathfに定義 …

no image

Unity – UIのButtonにイベントを設定する方法まとめ

こんにちは、今日はUnityでUIのButtonクリック時に発生するイベントを設定する方法についてまとめていきます。 HierarchyウィンドウからCreate > UI > Buttonを選択や、 …