Unity3D开发之查找面板上某个脚本(包括Missing)
原地址:http://blog.csdn.net/lihandsome/article/details/24265411
有时候我们需要知道某个脚本在场景上面哪里用到,或者那个脚本被删除了但又没有把相关游戏场景的关联东西删掉,那样我们就要一个脚本来查找一下了:
PS:下面两个脚本都要放到assets/Editor下面哦。。
查找missing的脚本:
- using UnityEngine;
- using UnityEditor;
- public class FindMissingScriptsRecursively : EditorWindow
- {
- static int go_count = 0, components_count = 0, missing_count = 0;
- [MenuItem("Window/FindMissingScriptsRecursively")]
- public static void ShowWindow()
- {
- EditorWindow.GetWindow(typeof(FindMissingScriptsRecursively));
- }
- public void OnGUI()
- {
- if (GUILayout.Button("Find Missing Scripts in selected GameObjects"))
- {
- FindInSelected();
- }
- }
- private static void FindInSelected()
- {
- GameObject[] go = Selection.gameObjects;
- go_count = 0;
- components_count = 0;
- missing_count = 0;
- foreach (GameObject g in go)
- {
- FindInGO(g);
- }
- Debug.Log(string.Format("Searched {0} GameObjects, {1} components, found {2} missing", go_count, components_count, missing_count));
- }
- private static void FindInGO(GameObject g)
- {
- go_count++;
- Component[] components = g.GetComponents<Component>();
- for (int i = 0; i < components.Length; i++)
- {
- components_count++;
- if (components[i] == null)
- {
- missing_count++;
- string s = g.name;
- Transform t = g.transform;
- while (t.parent != null)
- {
- s = t.parent.name +"/"+s;
- t = t.parent;
- }
- Debug.Log (s + " has an empty script attached in position: " + i, g);
- }
- }
- // Now recurse through each child GO (if there are any):
- foreach (Transform childT in g.transform)
- {
- //Debug.Log("Searching " + childT.name + " " );
- FindInGO(childT.gameObject);
- }
- }
- }
查找某个脚本的脚本:
- using UnityEngine;
- using System.Collections;
- using System.Collections.Generic;
- using UnityEditor;
- /////////////////////////////////////////////////////////////////////////////
- //查找节点及所有子节点中,是否有指定的脚本组件
- /////////////////////////////////////////////////////////////////////////////
- public class MonoFinder : EditorWindow {
- Transform root = null;
- MonoScript scriptObj = null;
- int loopCount = 0;
- List<Transform> results = new List<Transform>();
- [MenuItem("Level4/Finder/MonoFinder")]
- static void Init(){
- EditorWindow.GetWindow(typeof(MonoFinder));
- }
- void OnGUI(){
- GUILayout.Label("节点:");
- root = (Transform)EditorGUILayout.ObjectField(root,typeof(Transform),true);
- GUILayout.Label("脚本类型:");
- scriptObj = (MonoScript)EditorGUILayout.ObjectField(scriptObj,typeof(MonoScript),true);
- if(GUILayout.Button("Find")){
- results.Clear();
- loopCount = 0;
- Debug.Log("开始查找.");
- FindScript(root);
- }
- if(results.Count > 0){
- foreach(Transform t in results){
- EditorGUILayout.ObjectField(t,typeof(Transform),false);
- }
- }else{
- GUILayout.Label("无数据");
- }
- }
- void FindScript(Transform root){
- if(root != null && scriptObj != null){
- loopCount ++;
- Debug.Log(".."+loopCount+":"+root.gameObject.name);
- if( root.GetComponent(scriptObj.GetClass()) != null){
- results.Add(root);
- }
- foreach(Transform t in root){
- FindScript(t);
- }
- }
- }
- }
相关的链接:
http://wiki.unity3d.com/index.php?title=FindMissingScripts
http://superherosk123.iteye.com/blog/1632627
Unity3D开发之查找面板上某个脚本(包括Missing)的更多相关文章
- Unity3D开发之查找面板上某个脚本(包含Missing)
有时候我们须要知道某个脚本在场景上面哪里用到,或者那个脚本被删除了但又没有把相关游戏场景的关联东西删掉,那样我们就要一个脚本来查找一下了: PS:以下两个脚本都要放到assets/Editor以下哦. ...
- 出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码)
出售Illustrator脚本插件面板(包含面板源码,以及面板上所有的功能源码) 购买后可提供相应的小修改,以及教你使用往这个多列面里再加上按钮功能! 这套源码可作为工作使用,也可用为新手学习AI脚面 ...
- 跟我从零基础学习Unity3D开发--NGUI入门基础
英雄联盟(撸啊撸) QQ飞车 魔兽世界等等相信大家都玩过游戏吧,玩过那UI知道是什么吧?UI可能说得有点专业的话那么游戏中那些属性面板例如: 现在对UI有一定认识了吧!回想一下您玩过的游戏就一定知道什 ...
- ADO面板上的控件简介
ADO面板上的控件简介 一. TADOConnection组件该组件用于建立数据库的连接.ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等.该组件用于建立数据库的连接,该连接可被 ...
- Delphi7 ADO面板上的控件简介
? ADO Connection的主要方法:1) Begin Trans 开始启动一个新的事务,必须保证数据连接处于激活状态.2) Cancel 关闭于数据库的连接.3) Commit T ...
- 添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三)
添加启动游戏过渡场景Default Splash Scene(Unity3D开发之十三) 猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blo ...
- IE8“开发人员工具”(上)
认识“开发人员工具” 开发人员工具在IE8的工具菜单下,或者直接点击F12快捷键也可以呼叫出来. 提供一系列的小工具,让你可以方便的查找页面的bug,包括html代码.css代码和JavaScript ...
- unity3d开发实战《啪啪三国》技术详解!
去年11月,上海火溶网络CEO王伟峰以其第一款3d手游产品<啪啪三国>为例,着重讲解了unity3D手机网游开发的经验,其中涉及了团队组成.人员要求.常见的unity3d开发遇到的坑及解 ...
- 菜鸟在线教你用Unity3D开发VR版的Hello World
大家好,我是菜鸟在线的小编.这篇短文将告诉大家如何用Unity3D开发VR版的Hello World. 1开启SteamVR并连接Vive设备 (a)登录Steam客户端,并点击右上角的VR按钮,这时 ...
随机推荐
- 常用的sql标准建表语句
使用指定数据库 use v4base 建一张表 /*************************************************************************** ...
- Linux msgsnd : invalid argument
msgsnd(message id, buffer, sizeof buffer, ...); Important: buffer[0]不能为0!!!
- 169. Majority Element My Submissions Question
Total Accepted: 95925 Total Submissions: 239241 Difficulty: Easy Given an array of size n, find the ...
- 学习 .net 的一些主要网站
学习 .net 的一些主要网站 来自 http://www.cnblogs.com/trymybest121/articles/500176.html http://msdn.microsoft. ...
- 第一个MapReduce程序
计算文件中每个单词的频数 wordcount 程序调用 wordmap 和 wordreduce 程序. import org.apache.hadoop.conf.Configuration; im ...
- linux ubuntu ppa源
ubuntu10.04添加删除PPA源 增加ppa资源以后,今后的版本更新什么的都会从launchpad去下载,在国内访问launchpad速度比乌龟还慢 Ubuntu里,PPA代表一种非稳定版本 ...
- WebApi传递JSON参数
开发过程中经常进行JSON的传递,在WebApi中传递JSON字串时,会发现服务器端接收到不参数值,看下面代码 服务端: public void Post([FromBody]string value ...
- Jquery实现手机上下滑屏滑动的特效代码
要引入两个jquery插件 可以去网上下载 <script src="jquery-1.11.1.min.js"></script><script s ...
- vb6-很简单的配置密码验证提示
'很简单的配置密码验证提示 Dim add As String add = Trim(InputBox("请输入配置密码", "报表配置")) If add = ...
- The architecture of LTE network.
3GPP定义的LTE网络架构结构变得扁平化,无线RNC/BSC 消失,只有eNodeB.控制面使用MME进行处理,用户面使用SGW和PGW进行处理.相比GSM和UMTS,在逻辑接口上定义了S1/X2逻 ...