Пример #1
0
        /// <summary>
        /// 导入项目的Assets文件夹,并修改.cs文件解决冲突
        /// </summary>
        /// <param name="path">需要导入Assets文件夹的项目路径</param>
        /// <param name="currentProjectTempPath">临时文件夹</param>
        /// <param name="projectName">需要导入项目名称</param>
        public override void Import(string path, string currentProjectTempPath, string projectName)
        {
            //当前项目的Assets文件夹的全路径,路径中使用"/"分隔,不是"\"。
            string assetsPath = Application.dataPath;

            //备份当前项目的所有GUID用于判断是否重复
            string[] oldGuidList = GuidUtil.GetAllMetaFileGuidList(assetsPath, true);
            //创建子项目目录,如果目录存在则先删除
            string childProjectPath = assetsPath + "/" + projectName;

            FileUtil2.CreateDirectory(childProjectPath, true);
            EditorUtility.ClearProgressBar();
            //子项目Assets目录
            string childProjectAssetsPath = childProjectPath + "/Assets";

            //复制项目的Assets文件夹到子项目路径
            FileUtil2.CopyDirectory(path + "/Assets", childProjectAssetsPath);
            //删除DOTweenSettings.asset
            DeleteDOTweenSettingsAsset(childProjectAssetsPath);
            //删除不需要导入的文件夹,如Editor、Gizmos、Plugins等
            ForeachAndDeleteIgnoreFolders(childProjectAssetsPath);
            //修改文件夹下的.cs文件解决冲突
            ForeachAndEditCSharpFiles(childProjectAssetsPath, projectName);
            //修改文件夹下的.unity文件,修正SortingLayer等
            ForeachAndEditUnityFiles(childProjectAssetsPath, projectName);
            //修改冲突的GUID
            ForeachAndEditGuids(childProjectAssetsPath, oldGuidList);
        }
Пример #2
0
        /// <summary>
        /// 返回指定文件夹所有与excludeGuidList中项重复的Guid
        /// </summary>
        /// <param name="folderPath">查找的文件夹路径</param>
        /// <param name="excludeGuidList">用于判断重复的guid列表</param>
        /// <returns></returns>
        private string[] GetDuplicateGuidList(string folderPath, string[] excludeGuidList)
        {
            List <string> results = new List <string>();

            string[] folderAllMetaGuids = GuidUtil.GetAllMetaFileGuidList(folderPath);
            int      i = folderAllMetaGuids.Length;

            while (--i >= 0)
            {
                string guidString  = folderAllMetaGuids[i];
                bool   isDuplicate = Array.IndexOf(excludeGuidList, guidString) > -1;
                if (isDuplicate)
                {
                    results.Add(guidString);
                }
            }
            return(results.ToArray());
        }