この記事でのバージョン
Unity 2020.3.25f1
はじめに
今回はタイトル通り現在再生しているシーンがビルドに設定されているかを判定する方法です!
「実際にリリースする時に使うシーンだけで処理を行いたい(行いたくない)」
みたいな時に役立つ感じです。
現在再生しているシーンがビルドに設定されているか
さっそくですが現在再生しているシーンはSceneManager.GetActiveSceneで取得出来ます。
//SceneManagerを使うのに必要 using UnityEngine.SceneManagement;
//現在再生しているシーン名を表示 Debug.Log($"現在のシーン : {SceneManager.GetActiveScene().name}");
次にビルドに設定されているシーンはEditorBuildSettings.scenesで取得出来ます。
ただし、シーンのパスしか直接取得出来ないのでシーン名は
Path.GetFileNameWithoutExtensionを使ってパスから取り出します。
//Pathを使うのに必要 using System.IO; //EditorBuildSettingsを使うのに必要、エディタ上でしか使えないのでUNITY_EDITORで括る #if UNITY_EDITOR using UnityEditor; #endif
//ビルドに設定されているすべてのシーン名を表示 #if UNITY_EDITOR foreach (var scene in EditorBuildSettings.scenes) { Debug.Log($"ビルドに設定されているシーン : {Path.GetFileNameWithoutExtension(scene.path)}"); } #endif
これらを合わせる事で現在再生しているシーンがビルドに設定されているかを判定出来ます。
#if UNITY_EDITOR //現在再生しているシーン名を取得 var currentSceneName = SceneManager.GetActiveScene().name; //ビルドに設定されているかで処理を分ける if (EditorBuildSettings.scenes.Any(scene => Path.GetFileNameWithoutExtension(scene.path) == currentSceneName )) { Debug.Log($"現在のシーン{currentSceneName}はビルドに設定されています"); } else { Debug.Log($"現在のシーン{currentSceneName}はビルドに設定されていません"); } #endif