文件流方式 删除prefab空脚本

 1 /// <summary>
 2 /// 删除一个Prefab上的空脚本
 3 /// </summary>
 4 /// <param name="path">prefab路径 例Assets/Resources/FriendInfo.prefab</param>
 5 private void DeleteNullScript(string path)
 6 {
 7     bool isNull = false;
 8     string s = File.ReadAllText(path);
 9
10     Regex regBlock = new Regex("MonoBehaviour");
11
12     // 以"---"划分组件
13     string[] strArray = s.Split(new string[] { "---" }, StringSplitOptions.RemoveEmptyEntries);
14
15     for (int i = 0; i < strArray.Length; i++)
16     {
17         string blockStr = strArray[i];
18
19         if (regBlock.IsMatch(blockStr))
20         {
21             // 模块是 MonoBehavior
22             Match guidMatch = Regex.Match(blockStr, "m_Script: {fileID: (.*), guid: (?<GuidValue>.*?), type:");
23             if (guidMatch.Success)
24             {
25                 // 获取 MonoBehavior的guid
26                 string guid = guidMatch.Groups["GuidValue"].Value;
27                 //Debug.Log("Guid:" + guid);
28
29                 if (string.IsNullOrEmpty(GetScriptPath(guid)))
30                 {
31                     // 工程中无此脚本 空脚本!!!
32                     //Debug.Log("空脚本");
33                     isNull = true;
34
35                     // 删除操作
36
37                     // 删除MonoScript
38                     s = s.Replace("---" + blockStr, "");
39
40                     Match idMatch = Regex.Match(blockStr, "!u!(.*) &(?<idValue>.*?)\r");
41                     if (idMatch.Success)
42                     {
43                         // 获取 MonoBehavior的guid
44                         string id = idMatch.Groups["idValue"].Value;
45
46                         // 删除MonoScript的引用
47                         Regex quote = new Regex("  - (.*): {fileID: " + id + "}");
48                         s = quote.Replace(s, "");
49                     }
50
51                 }
52
53             }
54
55         }
56
57
58     }
59
60     if (isNull)
61     {
62         // 有空脚本 写回prefab
63         File.WriteAllText(path, s);
64
65         // 打印Log
66         Debug.Log(path);
67     }
68 }  
时间: 2024-10-09 20:10:02

文件流方式 删除prefab空脚本的相关文章

删除指定文件夹中除保留的文件外的所有文件批处理 删除指定文件夹下的空文件夹,包括子目录批处理

删除指定文件夹中除保留的文件外的所有文件批处理 @echo off set "ext= sln csproj" for /f "delims=" %%a in ('dir /b/s/a-d *.*') do ( set .= if /i not "%%~nxa"=="%~nx0" ( for %%i in (%ext%) do if /i "%%~xa"==".%%i" set .=.

linux shell 脚本 历史文件清理脚本,按天,按月,清理前N天的历史文件,删除指定大小历史文件,历史文件归档清理

不知道大家那有没有要清理的这个事情.需要清理目录历史文件.可能后续也会有很多其他地方需要清理历史文件,可能会用到. 我这两天空闲写了个脚本,清理比较方便,有要进行清理的大量历史文件的话可以用. 脚本用到的命令只有linux才有,像solaris等就不支持,所以只能在linux上运行.如果是nas存储的话,可以挂载到一个linux主机上跑脚本清理. 另外,脚本查找文件用的是ls,但是ls也有最大文件的限度(大概10w以内),如果每天文件很多,每天都是10w+的,运行可能提示文件数过多无法ls. 还

Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效。文件的删除

内容是google的,测试有效,因为用revel打包的东西删除以后有这个循环bug Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效.文件的删除 关于这个问题我找到的一些资料, 可以通过如下方法删除 1.打开 终端 应用程序. 2.键入: sudo rm -rf 注意:在“-rf”后键入一个空格.没有空格该命令将不能执行.在步骤 6 之前请都不要按下 Return 键. 3.打开您的“废纸篓”. 4.从“编辑”菜单中选择“全选”. 5.将“废纸篓”中的所有内容都拖

c盘哪些文件可以删除 你知道电脑c盘哪些文件可以删除吗

在此之前,笔者就有和大家说过c盘空间越来越小要怎么办,特别是老式电脑,硬盘太小,更容易导致c盘空间变小,当C盘存了太多文件的时候,电脑还会提示"您的C盘系统资源不足",众所周知,C盘是系统盘,如果有太多垃圾文件就会影响空间大小,所以大家通常都是对C盘进行垃圾文件清理,那么你知道电脑c盘哪些文件可以删除吗?今天系统圣地的小编就来给大家说说c盘哪些文件可以删除. c盘哪些文件可以删除 进入C盘一般都可以看到这3个文件夹:Documents and Settings(桌面文件),Progam

unity中.meta提交错误操作导致空脚本

工作时遇到了一个奇葩的问题,同事做的界面,再策划那里死活无法运行,其他同事的都没有问题.简单一查,是界面上挂了个空脚本,但是同事提交了对应的脚本,其他人那里脚本是正常.随后想到是否是.meta的问题.查svn的log,那个同事先提的脚本,之后提的.meta.策划刚好在这段时间内更新,即使之后再次更新,.meta文件依旧有问题.解决办法,最后在策划删掉.meta文件,让unity重新生成. 随后测试了几次,毕现.也不知道是unity还是svn的问题.

文件上传漏洞演示脚本之js验证

文件上传漏洞演示脚本之js验证 0 0 716 关于文件上传漏洞,想必玩web安全的同学们都有接触,之前本站也发布过一篇文章介绍文件上传漏洞的各种绕过方法,但是只是有文档却没有演示代码,最近给公司一客户培训,就照文档中的绕过写出了相应的代码,方便我等小菜研究,此次的文章我会连续发几天都是关于如何绕过的,全都是科普文,很简单的,希望小伙伴们喜欢. 关于文件上传漏洞的文章 绕过文件上传验证 为什么文件上传表单是主要的安全威胁 js验证绕过演示代码 01 <?php 02 /** 03  * Crea

Ant步步为营(5)用for和foreach的方法遍历一个文件夹,查找到某个文件并删除

今天有个任务是要删除VM上的某个文件夹下的两个jar包.不过这个任务没有分配给我,而是分配给俺的师傅,哈哈.不过我还是自己动手写了一些脚本在本地模拟一下删除某个指定文件. build.xml <?xml version="1.0"?>    <project name="ForTest" default="build" >    <property file="build.properties"&

纯 PHP 代码最好在文件末尾删除 PHP 结束标记

如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记.这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图. <?php echo "Hello world"; // ... more code echo "Last statement"; // 脚本至此结束,并无 PHP 结束标记 http://php.net/manual/zh/language.basic-synta

删除文件、删除文件夹操作

/** * 删除单个文件 * * @param sPath * 被删除文件的路径+文件名 * @return 单个文件删除成功返回true,否则返回false */ public static boolean deleteFile(String sPath) { Boolean flag = false; File file = new File(sPath); // 路径为文件且不为空则进行删除 if (file.isFile() && file.exists()) { file.del