unityのバージョン unity2018.4.0f1
はじめに
今回はエディタ拡張のプラグインを作る際のプラットフォーム判定についての記事になります!
ただ最初に申し上げておくと、私自身本当にそうなのかは確信がないので、参考程度に考えていただけると嬉しいです。
プラットフォーム依存コンパイル
よくこのようなコードでプラットフォーム判定をすることがあると思います。
using UnityEngine; using System.Collections; public class PlatformDefines : MonoBehaviour { void Start () { #if UNITY_EDITOR Debug.Log("Unity Editor"); #endif #if UNITY_IOS Debug.Log("Iphone"); #endif #if UNITY_STANDALONE_OSX Debug.Log("Stand Alone OSX"); #endif #if UNITY_STANDALONE_WIN Debug.Log("Stand Alone Windows"); #endif } }
ただこれはコンパイル時にプラットフォームに応じてコードを分けることを行っています。
しかしプラグインを作成する場合、例えばVisual Studio内でコンパイルを行うと、おかしなことになってしまうのではないのかと思いました。
(本当かどうかはまだ分かっていません)
これを考えて以下のような書き方に変更しました。
Application.platformを使う
こちらのコードに変更すれば、この問題を解決できると思います。
if (Application.platform == RuntimePlatform.OSXEditor) { // MacOSでのエディタ } else if (Application.platform == RuntimePlatform.WindowsEditor) { // Windowsでのエディタ } else if (Application.platform == RuntimePlatform.LinuxEditor) { // Linuxでのエディタ } else { //その他 }
さいごに
とりあえず下のコードなら安全だと思います。
ただくどいかもしれませんが、本当に上のやり方がダメなのかは分かっていませんのでご了承ください。