Version: 2022.1
public static EditorBuildSettingsScene[] scenes ;

描述

The list of Scenes that should be included in the build.

Exposes the list of Scenes that is shown in the Build Settings window. You can modify this list to set up which Scenes should be included in the build.

Note: When calling BuildPipeline.BuildPlayer directly, BuildPlayerOptions.scenes can be used instead of this property.

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

public class ExampleWindow : EditorWindow { List<SceneAsset> m_SceneAssets = new List<SceneAsset>();

// Add menu item named "Example Window" to the Window menu [MenuItem("Window/Example Window")] public static void ShowWindow() { //Show existing window instance. If one doesn't exist, make one. EditorWindow.GetWindow(typeof(ExampleWindow)); }

void OnGUI() { GUILayout.Label("Scenes to include in build:", EditorStyles.boldLabel); for (int i = 0; i < m_SceneAssets.Count; ++i) { m_SceneAssets[i] = (SceneAsset)EditorGUILayout.ObjectField(m_SceneAssets[i], typeof(SceneAsset), false); } if (GUILayout.Button("Add")) { m_SceneAssets.Add(null); }

GUILayout.Space(8);

if (GUILayout.Button("Apply To Build Settings")) { SetEditorBuildSettingsScenes(); } }

public void SetEditorBuildSettingsScenes() { // Find valid Scene paths and make a list of EditorBuildSettingsScene List<EditorBuildSettingsScene> editorBuildSettingsScenes = new List<EditorBuildSettingsScene>(); foreach (var sceneAsset in m_SceneAssets) { string scenePath = AssetDatabase.GetAssetPath(sceneAsset); if (!string.IsNullOrEmpty(scenePath)) editorBuildSettingsScenes.Add(new EditorBuildSettingsScene(scenePath, true)); }

// Set the Build Settings window Scene list EditorBuildSettings.scenes = editorBuildSettingsScenes.ToArray(); } }