示例#1
0
        /// <summary>
        /// 替换文件冲突的guid
        /// </summary>
        /// <param name="filePath">文件路径</param>
        /// <param name="duplicateGuidList">重复有冲突的guid列表</param>
        /// <param name="replaceGuidList">要替换的guid列表,各个元素索引与duplicateGuidList一致</param>
        private void ReplaceFileDuplicateGuid(string filePath, string[] duplicateGuidList, string[] replaceGuidList)
        {
            Regex         regex     = new Regex(@"guid:\s*");
            List <string> fileLines = FileUtil2.GetFileLines(filePath, true, -1);
            int           len       = fileLines.Count;

            for (int i = 0; i < len; i++)
            {
                string line  = fileLines[i];
                Match  match = regex.Match(line);
                if (match.Success)
                {
                    int    guidStartIndex       = match.Index + match.Value.Length;
                    string guidString           = line.Substring(guidStartIndex, 32);
                    int    atDuplicateListIndex = Array.IndexOf(duplicateGuidList, guidString);
                    if (atDuplicateListIndex > -1)
                    {
                        line         = line.Remove(guidStartIndex, 32);
                        line         = line.Insert(guidStartIndex, replaceGuidList[atDuplicateListIndex]);
                        fileLines[i] = line;
                    }
                }
            }
            FileUtil2.WriteFileLines(fileLines.ToArray(), filePath);
        }
示例#2
0
        /// <summary>
        /// 修改.cs文件
        /// </summary>
        /// <param name="filePath">文件路径,如果是'\'路径,需要加@转换,如:editCSharpFile(@"E:\unity_tags\Assets\Main.cs")。</param>
        /// <param name="projectName">导入的项目名称</param>
        private void EditCSharpFile(string filePath, string projectName)
        {
            List <string> fileLines = FileUtil2.GetFileLines(filePath, true);

            //修正不兼容的"SortingLayer"代码,使用"SortingLayer2"替换
            FixSortingLayerCode(fileLines);
            //修正不兼容的"LayerMask"代码,使用"LayerMask2"替换
            FixLayerMaskCode(fileLines);
            //修正不兼容的"SceneManager"代码,使用"SceneManager2"类替换
            FixSceneManagerCode(fileLines);
            //修正不兼容的"QualitySettings"代码,使用"QualitySettings2"类替换
            FixQualitySettingsCode(fileLines);
            //检测并添加以项目命名的namespace到.cs文件
            CheckAndAddNameSpaceToCSharpFile(fileLines, projectName, filePath);
            //重新写入文件
            FileUtil2.WriteFileLines(fileLines.ToArray(), filePath);
        }
示例#3
0
        /// <summary>
        /// 修改.unity文件
        /// 注意:请确保需要修改的.unity文件没有在编辑器中打开,否则会修改不成功
        /// </summary>
        /// <param name="filePath">文件路径,如果是'\'路径,需要加@转换,如:editCSharpFile(@"E:\unity_tags\Assets\main.unity")。</param>
        /// <param name="projectName">导入的项目名称</param>
        private void EditUnityFile(string filePath, string projectName)
        {
            //是否在编辑器中打开.unity
            string tempFilePath = filePath.Replace('\\', '/');
            int    sceneCount   = EditorSceneManager.sceneCount;

            for (int i = 0; i < sceneCount; i++)
            {
                var scene = EditorSceneManager.GetSceneAt(i);
                if (tempFilePath.IndexOf(scene.path, StringComparison.Ordinal) > -1)
                {
                    Debug.LogError("请关闭" + scene.path + "再重新导入");
                    break;
                }
            }
            //
            List <string> fileLines = FileUtil2.GetFileLines(filePath, true);

            //修正引用的SortingLayer.id
            FixSortingLayerID(fileLines);
            //重新写入文件
            FileUtil2.WriteFileLines(fileLines.ToArray(), filePath);
        }