Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

Unity Editor上かどうかで処理内容を変える

Unityの開発はUnity Editorで行うが、Editor上と実際の実行プラットフォーム(Windows, Mac, LinuxiOS, Androidなど)とで処理を変えたい場合がある。これには次の2つの方法がある。

1. "Application.platform"を使う方法

実行時にスクリプト内で現在の実行プラットフォームを見て、処理を変える方法。

docs.unity3d.com

プラットフォームのクラス変数は、"RuntimePlatform"に定義されている。

docs.unity3d.com

2. プリプロセッサ"UNITY_EDITOR"を使う方法

コンパイル時に(つまり実行前に)ターゲットとなるプラットフォームを評価して、実行する処理を選択する方法。実行時に動的に評価するのではなく、プラットフォームに応じて実行ファイル自体を変えてしまうもの。

#if UNITY_EDITOR エディターでの処理 #else エディター以外での処理 #endif

のように記述する。

さらに、エディター上でも、実行中か否かで別処理にしたい場合はApplication.isPlayingと組み合わせて、たとえば、

#if UNITY_EDITOR
    nextBlendTime = Application.isPlaying ? blendTime : 0f;
#else
    nextBlendTime = blendTime;
#endif

のように書けばよい。

より細かく、

  • UNITY_EDITOR_WIN :Windowsのエディタ環境
  • UNITY_EDITOR_OSXMac(OS X)のエディタ環境

などの区別も可能。

  

また、

  • UNITY_4_6

など、Unityのバージョンによって処理を変えることもできる。

プリプロセッサで使用できるプラットフォーム種類の変数は次を参照。

docs.unity3d.com