123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- //------------------------------------------------------------
- // Game Framework
- // Copyright © 2013-2021 loyalsoft. All rights reserved.
- // Homepage: http://www.game7000.com/
- // Feedback: http://www.game7000.com/
- //------------------------------------------------------------
- using GameFramework;
- using System.Collections.Generic;
- using System.IO;
- using System.Xml;
- using UnityEditor;
- using UnityEngine;
- namespace UnityGameFramework.Editor
- {
- /// <summary>
- /// 构建配置相关的实用函数。
- /// </summary>
- internal static class BuildSettings
- {
- private static readonly string s_ConfigurationPath = null;
- private static readonly List<string> s_DefaultSceneNames = new List<string>();
- private static readonly List<string> s_SearchScenePaths = new List<string>();
- static BuildSettings()
- {
- s_ConfigurationPath = Type.GetConfigurationPath<BuildSettingsConfigPathAttribute>() ?? Utility.Path.GetRegularPath(Path.Combine(Application.dataPath, "GameFramework/Configs/BuildSettings.xml"));
- s_DefaultSceneNames.Clear();
- s_SearchScenePaths.Clear();
- if (!File.Exists(s_ConfigurationPath))
- {
- return;
- }
- try
- {
- XmlDocument xmlDocument = new XmlDocument();
- xmlDocument.Load(s_ConfigurationPath);
- XmlNode xmlRoot = xmlDocument.SelectSingleNode("UnityGameFramework");
- XmlNode xmlBuildSettings = xmlRoot.SelectSingleNode("BuildSettings");
- XmlNode xmlDefaultScenes = xmlBuildSettings.SelectSingleNode("DefaultScenes");
- XmlNode xmlSearchScenePaths = xmlBuildSettings.SelectSingleNode("SearchScenePaths");
- XmlNodeList xmlNodeList = null;
- XmlNode xmlNode = null;
- xmlNodeList = xmlDefaultScenes.ChildNodes;
- for (int i = 0; i < xmlNodeList.Count; i++)
- {
- xmlNode = xmlNodeList.Item(i);
- if (xmlNode.Name != "DefaultScene")
- {
- continue;
- }
- string defaultSceneName = xmlNode.Attributes.GetNamedItem("Name").Value;
- s_DefaultSceneNames.Add(defaultSceneName);
- }
- xmlNodeList = xmlSearchScenePaths.ChildNodes;
- for (int i = 0; i < xmlNodeList.Count; i++)
- {
- xmlNode = xmlNodeList.Item(i);
- if (xmlNode.Name != "SearchScenePath")
- {
- continue;
- }
- string searchScenePath = xmlNode.Attributes.GetNamedItem("Path").Value;
- s_SearchScenePaths.Add(searchScenePath);
- }
- }
- catch
- {
- }
- }
- /// <summary>
- /// 将构建场景设置为默认。
- /// </summary>
- [MenuItem("Game Framework/Scenes in Build Settings/Default Scenes", false, 20)]
- public static void DefaultScenes()
- {
- HashSet<string> sceneNames = new HashSet<string>();
- foreach (string sceneName in s_DefaultSceneNames)
- {
- sceneNames.Add(sceneName);
- }
- List<EditorBuildSettingsScene> scenes = new List<EditorBuildSettingsScene>();
- foreach (string sceneName in sceneNames)
- {
- scenes.Add(new EditorBuildSettingsScene(sceneName, true));
- }
- EditorBuildSettings.scenes = scenes.ToArray();
- Debug.Log("Set scenes of build settings to default scenes.");
- }
- /// <summary>
- /// 将构建场景设置为所有。
- /// </summary>
- [MenuItem("Game Framework/Scenes in Build Settings/All Scenes", false, 21)]
- public static void AllScenes()
- {
- HashSet<string> sceneNames = new HashSet<string>();
- foreach (string sceneName in s_DefaultSceneNames)
- {
- sceneNames.Add(sceneName);
- }
- string[] sceneGuids = AssetDatabase.FindAssets("t:Scene", s_SearchScenePaths.ToArray());
- foreach (string sceneGuid in sceneGuids)
- {
- string sceneName = AssetDatabase.GUIDToAssetPath(sceneGuid);
- sceneNames.Add(sceneName);
- }
- List<EditorBuildSettingsScene> scenes = new List<EditorBuildSettingsScene>();
- foreach (string sceneName in sceneNames)
- {
- scenes.Add(new EditorBuildSettingsScene(sceneName, true));
- }
- EditorBuildSettings.scenes = scenes.ToArray();
- Debug.Log("Set scenes of build settings to all scenes.");
- }
- }
- }
|