本日は Unity の小ネタ枠です。
Unityのプロジェクトでビルドプラットフォームをスクリプトで固定する方法についてです。
ビルドプラットフォームをスクリプトで指定する
ビルドプラットフォームをスクリプトで指定する場合は EditorUserBuildSettings.SwitchActiveBuildTarget 関数を利用できます。
docs.unity3d.com
引数の BuildTargetGroup でビルドプラットフォームを指定します。
BuildTarget では Standalone プラットフォームを指定したとき、更に Windows や Mac などの細かな OS 指定を行います。
docs.unity3d.com
docs.unity3d.com
因みに BuildTargetGroup = Standalone かつ BuildTarget = Android など不可能な組み合わせを指定した場合はエラーが発生します。
サンプルスクリプト
以下のサンプルスクリプトを作成しました。
起動時に指定のプラットフォーム(本スクリプトでは Standalone - Windows64bit)に切り替えた後、他のプラットフォームに切り替わらないように監視し続けます。
・EditorUpdateTest.cs
using UnityEngine; #if UNITY_EDITOR using UnityEditor; // InitializeOnLoadをつけるとUnityEditorが起動したとき、または // スクリプトがコンパイルされた直後に静的コンストラクタが自動的に実行されます [InitializeOnLoad] public class SwitchPlatformTest : MonoBehaviour { private const BuildTarget ProjectBuildTarget = BuildTarget.StandaloneWindows64; private const BuildTargetGroup ProjectBuildTargetGroup = BuildTargetGroup.Standalone; static SwitchPlatformTest() { // プラットフォームを Standalone の Windows 64bit 向けに変更する EditorUserBuildSettings.SwitchActiveBuildTarget(ProjectBuildTargetGroup, ProjectBuildTarget); // エディターの監視処理を登録する EditorApplication.update += Update; } private static void Update() { // 指定のプラットフォーム以外が選択された場合はすぐに元に戻す if (EditorUserBuildSettings.selectedBuildTargetGroup != ProjectBuildTargetGroup) { EditorUserBuildSettings.selectedBuildTargetGroup = ProjectBuildTargetGroup; } if (EditorUserBuildSettings.selectedStandaloneTarget != ProjectBuildTarget) { EditorUserBuildSettings.selectedStandaloneTarget = ProjectBuildTarget; } } } #endif