Exemple #1
0
        /// <summary>
        /// 导入项目的BuildSettings
        /// </summary>
        /// <param name="path">需要导入BuildSettings的项目路径</param>
        /// <param name="currentProjectTempPath">临时文件夹</param>
        /// <param name="projectName">需要导入项目名称</param>
        public override void Import(string path, string currentProjectTempPath, string projectName)
        {
            //需要导入的EditorBuildSettings.asset的路径
            string settingsFilePath = path + "/ProjectSettings/EditorBuildSettings.asset";

            StreamReader streamReader = new StreamReader(settingsFilePath, Encoding.UTF8);
            YamlStream   yaml         = new YamlStream();

            yaml.Load(streamReader);
            streamReader.Dispose();
            streamReader.Close();

            YamlNode        rootNode  = yaml.Documents[0].RootNode;
            YamlMappingNode firstNode = (YamlMappingNode)rootNode["EditorBuildSettings"];

            //BuildSettings窗口场景列表
            List <EditorBuildSettingsScene> editorBuildsettingsscenes = new List <EditorBuildSettingsScene>();

            editorBuildsettingsscenes.AddRange(EditorBuildSettings.scenes);

            YamlSequenceNode scenesNode = (YamlSequenceNode)firstNode["m_Scenes"];
            List <SceneData> sceneDatas = new List <SceneData>();

            foreach (var item in scenesNode)
            {
                string scenePath = item["path"].ToString();
                bool   enabled   = item["enabled"].ToString() == "1";
                //场景数据结构体
                SceneData sceneData = new SceneData();
                sceneData.enabled = enabled;
                sceneData.path    = "Assets/" + projectName + "/" + scenePath;
                //添加到场景发布设置数据
                sceneDatas.Add(sceneData);
                //合并到当前BuildSettings窗口列表
                var editorBuildSettingsScene = new EditorBuildSettingsScene(sceneData.path, sceneData.enabled);
                editorBuildsettingsscenes.Add(editorBuildSettingsScene);
            }
            //创建发布设置数据
            BuildSettingsData buildSettingsData = ScriptableObject.CreateInstance <BuildSettingsData>();

            buildSettingsData.scenes = sceneDatas.ToArray();
            //赋值到BuildSettings窗口场景列表
            EditorBuildSettings.scenes = editorBuildsettingsscenes.ToArray();
            //保存发布设置数据到本地
            AssetDatabase.CreateAsset(buildSettingsData, ProjectImporterEditor.resourcePath + "/" + projectName + "_buildSettingsData.asset");
            AssetDatabase.Refresh();
        }
Exemple #2
0
        /// <summary>
        /// 返回项目的主场景路径名称
        /// </summary>
        /// <param name="buildSettingsData"></param>
        /// <returns></returns>
        private string GetMainSceneName(BuildSettingsData buildSettingsData)
        {
            string sceneName = "";
            var    scenes    = buildSettingsData.scenes;
            int    len       = scenes.Length;

            for (int i = 0; i < len; i++)
            {
                var scene = scenes[i];
                if (scene.enabled)
                {
                    sceneName = scene.path;
                    break;
                }
            }
            return(sceneName);
        }