Unity查找Editor下Project视图中特定的资源

 1 [MenuItem("Tools/Check Text Count")]
 2 public static void CheckText ()
 3 {
 4     //查找指定路径下指定类型的所有资源,返回的是资源GUID
 5     string[] guids = AssetDatabase.FindAssets ("t:GameObject", new string[] { "Assets/Resources/UI" });
 6     //从GUID获得资源所在路径
 7     List<string> paths = new List<string> ();
 8     guids.ToList ().ForEach (m => paths.Add (AssetDatabase.GUIDToAssetPath (m)));
 9     //从路径获得该资源
10     List<GameObject> objs = new List<GameObject> ();
11     paths.ForEach (p => objs.Add (AssetDatabase.LoadAssetAtPath (p, typeof (GameObject)) as GameObject));
12     //下面就可以对该资源做任何你想要的操作了,如查找已丢失的脚本、检查赋值命名等,这里查找所有的Text组件个数
13     List<Text> texts = new List<Text> ();
14     objs.ForEach (o => texts.AddRange (o.GetComponentsInChildren<Text> (true)));
15     Debug.Log ("Text count:" + texts.Count);
16 }

查找到你想要处理的资源后可以进行各种自定操作了,可参考以下博主的示例:

http://www.xuanyusong.com/archives/3727

其中删除missing的脚本很有用哦,单独Mark一下:

 1 [MenuItem("Edit/Cleanup Missing Scripts")]
 2  static void CleanupMissingScripts ()
 3  {
 4      for(int i = 0; i < Selection.gameObjects.Length; i++)
 5      {
 6          var gameObject = Selection.gameObjects[i];
 7
 8          // We must use the GetComponents array to actually detect missing components
 9          var components = gameObject.GetComponents<Component>();
10
11          // Create a serialized object so that we can edit the component list
12          var serializedObject = new SerializedObject(gameObject);
13          // Find the component list property
14          var prop = serializedObject.FindProperty("m_Component");
15
16          // Track how many components we‘ve removed
17          int r = 0;
18
19          // Iterate over all components
20          for(int j = 0; j < components.Length; j++)
21          {
22              // Check if the ref is null
23              if(components[j] == null)
24              {
25                  // If so, remove from the serialized component array
26                  prop.DeleteArrayElementAtIndex(j-r);
27                  // Increment removed count
28                  r++;
29              }
30          }
31
32          // Apply our changes to the game object
33          serializedObject.ApplyModifiedProperties();
34          //这一行一定要加!!!
35          EditorUtility.SetDirty(gameObject);
36      }
37  }
时间: 2024-10-11 21:06:17

Unity查找Editor下Project视图中特定的资源的相关文章

【Unity】12.1 场景视图中的GI可视化

分类:Unity.C#.VS2015 创建日期:2016-05-19 一.简介 在场景视图中设计不同的场景内容时,可以根据需要勾选相关的渲染选项,以便让场景仅显示其中的一部分或者全部渲染效果. 在这些模式中,其中有一套模式能看到全局光照在干什么事.默认情况下,纹理模式是根据 GI 设置来完全照亮场景的. 其他与GI有关的模式还包括:反照率(Albedo).发射光(Emissive). UV 图表(UV Charts). 辐照度(Irradiance). 方向性(Directionality).

Android 开发中eclipse 下 DDMS 视图中 sdcard 中文件导入的处理

首先需要说明下,这里说的sdcard的权限并不是指在Android application程序中设置sdcard的权限读 取问题.而是指在DDMS看到的目录下的那个sdcard目录的权限问题.       有时候,当你想在sdcard目录下面导入某个文件时,突然发现sdcard目录没有权限,它的权限状态为( d-------即000).这时候我们需要做的事:1.如果你没有配置好adb运行环境,在环境配置的path下面将 android-sdk-windows\platform-tools路劲添加

(转)Unity Assets目录下的特殊文件夹名称

原文:http://wiki.unity3d.com/index.php/Special_Folder_Names_in_your_Assets_Folder 1.隐藏文件夹以.开头的文件夹会被Unity忽略.在这种文件夹中的资源不会被导入,脚本不会被编译.也不会出现在Project视图中.2.Standard Assets在这个文件夹中的脚本最先被编译.这个文件夹中的脚本会被导出到Assembly-CSharp-firstpass, Assembly-UnityScript-firstpass

Unity Assets目录下的特殊文件夹名称

1.隐藏文件夹 以.开头的文件夹会被Unity忽略.在这种文件夹中的资源不会被导入,脚本不会被编译.也不会出现在Project视图中.2.Standard Assets 在这个文件夹中的脚本最先被编译. 这个文件夹中的脚本会被导出到Assembly-CSharp-firstpass, Assembly-UnityScript-firstpass 或 Assembly-Boo-firstpass项目中,依语言而定.参考http://docs.unity3d.com/Documentation/Ma

让Android Studio的Project视图和Anroid视图类似

关于AS的Project与Android视图的不同,可以看我的博文 http://blog.csdn.net/siyehuazhilian/article/details/42123563 Android视图就是隐藏了部分不需要查看的视图,合并了部分文件 但是有些目录并不是真实的.而且在创建目录和文件时,无法定位真实的路径. 这个对于习惯用真实路径看的人来说确实不方便. 在Project视图中,可以隐藏不关心的文件或目录,来达到与Android视图类似的效果,更佳符合我们的视图习惯 隐藏没用到的

[Unity3D]Unity3D游戏开发之在Android视图中嵌入Unity视图

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 喜欢我的博客请记住我的名字:秦元培,我博客地址是blog.csdn.net/qinyuanpei. 转载请注明出处,本文作者:秦元培,本文出处:

第62课 模型视图中的委托(下)

1. 委托的本质 (1)为视图提供数据编辑的上下文环境 (2)产生界面元素的工厂类 (3)能够使用和设置模型中的数据 2. 自定义委托类 (1)自定义委托类的继承关系 (2)自定义委托时需要重写的函数 ①createEditor ②updateEditorGeometry ③setEditorData ④setModelData ⑤paint(可选) (3)自定义委托时重写的函数由谁调用? 由于模型视图设计模式,视图中组合了委托对象,既然委托存在于视图内部,就应该由视图来调用(可从上图的函数调用

查找目录下的所有文件中是否含有某个字符串 linux

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri "IBM" -l 1.正则表达式    (1)正则表达式一般用来描述文本模式的特殊用法,由普通字符(例如字符a-z)以及特殊字符(称为元字符,如/.*.?等)组成.   (2)基本元字符集及其含义       ^ :只匹配行首.   如^a 匹配以a开头的行abc,

linux查找目录下的所有文件中是否含有某个字符串

查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" find .|xargs grep -ri "IBM" -l \ :只用来屏蔽一个元字符的特殊含义. 如\*,\',\",\|,\+,\^,\. 等       .:(点)只匹配任意单字符.       pattern\{n\}:只用来匹配前面pattern出现的次数.n为次数.如a\{2\}匹配aa.       pattern\{n,\}:含义同上,但次数