原地址:http://blog.csdn.net/lihandsome/article/details/24265411

有时候我们需要知道某个脚本在场景上面哪里用到,或者那个脚本被删除了但又没有把相关游戏场景的关联东西删掉,那样我们就要一个脚本来查找一下了:

PS:下面两个脚本都要放到assets/Editor下面哦。。

查找missing的脚本:

  1. using UnityEngine;
  2. using UnityEditor;
  3. public class FindMissingScriptsRecursively : EditorWindow
  4. {
  5. static int go_count = 0, components_count = 0, missing_count = 0;
  6. [MenuItem("Window/FindMissingScriptsRecursively")]
  7. public static void ShowWindow()
  8. {
  9. EditorWindow.GetWindow(typeof(FindMissingScriptsRecursively));
  10. }
  11. public void OnGUI()
  12. {
  13. if (GUILayout.Button("Find Missing Scripts in selected GameObjects"))
  14. {
  15. FindInSelected();
  16. }
  17. }
  18. private static void FindInSelected()
  19. {
  20. GameObject[] go = Selection.gameObjects;
  21. go_count = 0;
  22. components_count = 0;
  23. missing_count = 0;
  24. foreach (GameObject g in go)
  25. {
  26. FindInGO(g);
  27. }
  28. Debug.Log(string.Format("Searched {0} GameObjects, {1} components, found {2} missing", go_count, components_count, missing_count));
  29. }
  30. private static void FindInGO(GameObject g)
  31. {
  32. go_count++;
  33. Component[] components = g.GetComponents<Component>();
  34. for (int i = 0; i < components.Length; i++)
  35. {
  36. components_count++;
  37. if (components[i] == null)
  38. {
  39. missing_count++;
  40. string s = g.name;
  41. Transform t = g.transform;
  42. while (t.parent != null)
  43. {
  44. s = t.parent.name +"/"+s;
  45. t = t.parent;
  46. }
  47. Debug.Log (s + " has an empty script attached in position: " + i, g);
  48. }
  49. }
  50. // Now recurse through each child GO (if there are any):
  51. foreach (Transform childT in g.transform)
  52. {
  53. //Debug.Log("Searching " + childT.name  + " " );
  54. FindInGO(childT.gameObject);
  55. }
  56. }
  57. }

查找某个脚本的脚本:

  1. using UnityEngine;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEditor;
  5. /////////////////////////////////////////////////////////////////////////////
  6. //查找节点及所有子节点中,是否有指定的脚本组件
  7. /////////////////////////////////////////////////////////////////////////////
  8. public class MonoFinder : EditorWindow {
  9. Transform root = null;
  10. MonoScript scriptObj = null;
  11. int loopCount = 0;
  12. List<Transform> results = new List<Transform>();
  13. [MenuItem("Level4/Finder/MonoFinder")]
  14. static void Init(){
  15. EditorWindow.GetWindow(typeof(MonoFinder));
  16. }
  17. void OnGUI(){
  18. GUILayout.Label("节点:");
  19. root = (Transform)EditorGUILayout.ObjectField(root,typeof(Transform),true);
  20. GUILayout.Label("脚本类型:");
  21. scriptObj = (MonoScript)EditorGUILayout.ObjectField(scriptObj,typeof(MonoScript),true);
  22. if(GUILayout.Button("Find")){
  23. results.Clear();
  24. loopCount = 0;
  25. Debug.Log("开始查找.");
  26. FindScript(root);
  27. }
  28. if(results.Count > 0){
  29. foreach(Transform t in results){
  30. EditorGUILayout.ObjectField(t,typeof(Transform),false);
  31. }
  32. }else{
  33. GUILayout.Label("无数据");
  34. }
  35. }
  36. void FindScript(Transform root){
  37. if(root != null && scriptObj != null){
  38. loopCount ++;
  39. Debug.Log(".."+loopCount+":"+root.gameObject.name);
  40. if( root.GetComponent(scriptObj.GetClass()) != null){
  41. results.Add(root);
  42. }
  43. foreach(Transform t in root){
  44. FindScript(t);
  45. }
  46. }
  47. }
  48. }

相关的链接:

http://wiki.unity3d.com/index.php?title=FindMissingScripts

http://superherosk123.iteye.com/blog/1632627

Unity3D开发之查找面板上某个脚本(包括Missing)的更多相关文章

  1. Unity3D开发之查找面板上某个脚本(包含Missing)

    有时候我们须要知道某个脚本在场景上面哪里用到,或者那个脚本被删除了但又没有把相关游戏场景的关联东西删掉,那样我们就要一个脚本来查找一下了: PS:以下两个脚本都要放到assets/Editor以下哦. ...

  2. 出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码)

    出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码) 购买后可提供相应的小修改,以及教你使用往这个多列面里再加上按钮功能! 这套源码可作为工作使用,也可用为新手学习AI脚面 ...

  3. 跟我从零基础学习Unity3D开发--NGUI入门基础

    英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...

  4. ADO面板上的控件简介

    ADO面板上的控件简介 一. TADOConnection组件该组件用于建立数据库的连接.ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等.该组件用于建立数据库的连接,该连接可被 ...

  5. Delphi7 ADO面板上的控件简介

    ? ADO Connection的主要方法:1) Begin Trans    开始启动一个新的事务,必须保证数据连接处于激活状态.2) Cancel    关闭于数据库的连接.3) Commit T ...

  6. 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)

    添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...

  7. IE8“开发人员工具”(上)

    认识“开发人员工具” 开发人员工具在IE8的工具菜单下,或者直接点击F12快捷键也可以呼叫出来. 提供一系列的小工具,让你可以方便的查找页面的bug,包括html代码.css代码和JavaScript ...

  8. unity3d开发实战《啪啪三国》技术详解!

     去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重讲解了unity3D手机网游开发的经验,其中涉及了团队组成.人员要求.常见的unity3d开发遇到的坑及解 ...

  9. 菜鸟在线教你用Unity3D开发VR版的Hello World

    大家好,我是菜鸟在线的小编.这篇短文将告诉大家如何用Unity3D开发VR版的Hello World. 1开启SteamVR并连接Vive设备 (a)登录Steam客户端,并点击右上角的VR按钮,这时 ...

随机推荐

  1. CSS之图片关闭

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. vs2012如何创建报表

    引自百度文库,介绍的比较详细 http://wenku.baidu.com/view/c405d5f48762caaedc33d405.html

  3. self指向函数地址 动态调用函数的简单例子

    #import <Foundation/Foundation.h> @interface Person : NSObject - (void)test1; - (void)test2:(N ...

  4. IO&Seralize

    IO <appSettings> <!--日志路径--> <add key="LogPath" value="E:\学习\C#进阶\fsoc ...

  5. 当html中存在url中如: onclick="toView('参数1')", 参数1是特别字符,如&asop;&quot;' "等时,浏览器解析时会报错。解决方法如文中描述

    解决方案: 自定义标签将字符串转换成unicode编码后输出显示到页面即可 解析原理:解析顺序html  ---url ----javascript---url,由于unicode编码在htm解析阶段 ...

  6. XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

  7. DTCMS中文章增加tags标签和关键词时中文,替换为英文状态,

    DTCMS.Web\admin\article\article_edit.aspx 找到添加和修改的方法 model.tags = txtTags.Text.Trim()model.seo_keywo ...

  8. 【转】SQL 2008 Insert返回自动编号id三种方法比较

    SQL Server 2008中,insert数据的时候返回自动编号的id,有三种方法实现SCOPE_IDENTITY.IDENT_CURRENT 和 @@IDENTITY, 它们都返回插入到 IDE ...

  9. AngularJS(6)-选择框Select

    1.在 AngularJS 中我们可以使用 ng-option 指令来创建一个下拉列表,列表项通过对象和数组循环输出 <!DOCTYPE html> <html lang=" ...

  10. phpcmsV9中表单向导在js调用里日期控件在IE下报Calendar未定义的解决办法

    最近在phpcmsV9里用表单向导弄个的提交表单,但用了日期和时间类型时,用   <script language='javascript' src='{APP_PATH}index.php?m ...