1750人阅读
unity3D(65)
在开发中往往会遇到一个问题:不知道整个场景中究竟有哪些物体挂载了某一个脚本。如果挨个查找太麻烦了,下面有一种方法可以快速找到解决这个问题。
在unity的Window里有一项Editor tests runner 选择这个会出现一个窗口:如下图:
然后点击创建脚本会有脚本自动创建在project里的Editor下。之后我们要写两个脚本(如下图)
这两个脚本代码,一个是用来盛放要被找的那些物体另个是盛放你要来查找被物体挂载的脚本:
盛放物体的代码:
using UnityE
using UnityE
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.gameO
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.L i++)
components_count++;
if (components[i] == null)
missing_count++;
string s = g.
Transform t = g.
while (t.parent != null)
s = t.parent.name + &/& +
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 UnityE
using System.C
using System.Collections.G
using UnityE
/////////////////////////////////////////////////////////////////////////////
//查找节点及所有子节点中,是否有指定的脚本组件
/////////////////////////////////////////////////////////////////////////////
public class MonoFinder : EditorWindow
Transform root =
MonoScript scriptObj =
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);
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);
}有了这两个脚本,会发现unity的菜单里会多出一个level4(如图)的选项,然后点击它,会出现一个弹窗。上面那个节点(如图)就是盛放物体的,下面那个脚本类型(如图)就是放脚本的。
例如下面的案例中,我要查找一个名字叫AsyncImageDownloader的脚本在panoramic这个物体里有多少被挂载了。直接把对应的东西拖进去,然后点击find就会发现在userhead_portrait这个子物体里有这个脚本。
这种方法可以找到所有父物体下的子物体中所有的挂载。它会遍历整个父物体中个的子物体;
从下图中可以看出在panoramic这个父物体中有575个子物体,它们都被查找了一遍。可见刚才查到只有userhead_portrait上挂载了刚才要找的脚本。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:86644次
积分:2265
积分:2265
排名:第13864名
原创:135篇
转载:41篇
评论:18条
(2)(15)(11)(14)(10)(4)(1)(4)(1)(1)(5)(3)(2)(6)(2)(4)(13)(6)(8)(6)(2)(18)(41)您的举报已经提交成功,我们将尽快处理,谢谢!
告诉你我怎样挂机的:用你现有的装备在蜈蚣洞挂,设置如下:
1。设置保护:中红要设高一些,作到捡了就喝满,以便捡更多的东西,小太阳也是这样。
2。设置捡物:衣...
我直接传到我的共享资料里了
你可以点击我去下载
牛七和石墓阵都是那些大战士或大道士挂机的首选地图,我猜想盛大可能是为了妨碍某些人在那两个地图挂机而采取的措施,其他的地图也刷些猪王和法师王,自从刷猪王以后,我再...
大家还关注查看: 3758|回复: 16
花两万现今,请高手写个游戏内存挂架脚本
该用户从未签到
马上加入TC
才可以下载或查看,没有帐号?
主要是游戏脚本。长时间挂机。。无限多开客户端。。。还要有专用的答题器。。骗子。黑人。。别来。。价格合理的加我注明加我的理由。。由于时间有限,拒绝聊天。诚心写脚本的可以加我。只要是诚心写脚本,钱一分钱不会少给的。但是要押金,或是先付钱的。或是要求先付一半的,,这类人就不要来了。。作者写好了脚本我测试,先给一半。等游戏更新了,没什么问题了,其余的钱。一次付清
TA的每日心情郁闷 23:16签到天数: 4 天[LV.2]步步惊心
估计没人会来应征吧.
是楼主3岁,还是当作者是3岁呢??费心费力写给你&测试&才付一半??
运气好回复一句不好用了事,运气不好,连句回复都等不到
不用说你不会,你如何守信如何圣人.某只是以事论事,完全看不到任何保障来保证此类事情不会发生....
该用户从未签到
你对游戏不懂。。作者写好了脚本。如果我把钱都给了。。游戏一更新。结果脚本出来问题。。我找谁去。你个小孩子知道什么啊
TA的每日心情擦汗 05:36签到天数: 17 天[LV.4]牛刀小试
~~~~这帖子顶上去一定很好玩
TA的每日心情慵懒 12:26签到天数: 14 天[LV.3]循序渐进
要求是写框架,游戏更新也能算是框架么?如果自己一点也不会 那你要来是无用, 要求有更新 你这可以算是请长工呢! 内存脚本呀,工作量有多大你知道\清楚么? 写到头你一句不好用. 所有心血脑细胞全白费. 想要好东西却要别人承担风险,扯蛋不是. 是你求作者写 不是作者求你
该用户从未签到
顶起来看看
该用户从未签到
要求是写框架,游戏更新也能算是框架么?如果自己一点也不会 那你要来是无用, 要求有更新 你这可以算是请长工 ...
不是不给钱。。别人的钱也是辛苦挣来的。。不是捡来的。。当然作者写脚本会很辛苦。但是一分钱一分货。主动权完全在脚本作者手里。。要是我不给钱的话,,他随时可以把脚本作废。。但是我要是把钱都给了。脚本出现了问题,作者不给处理了。。我的钱不是白花了吗?要是你的话。。你会干这么大风险的事情吗?换位思考下行吗?再说了,我是急于要脚本。我会不给钱吗?
TA的每日心情慵懒 12:26签到天数: 14 天[LV.3]循序渐进
不是不给钱。。别人的钱也是辛苦挣来的。。不是捡来的。。当然作者写脚本会很辛苦。但是一分钱一分货。主 ...
试问作者写脚本不要时间?不要人工?&&事情做了 脚本做废 跟作者如果写好你却不要&&是一个意思.
TA的每日心情慵懒 09:49签到天数: 1 天[LV.1]初来乍到
你对游戏不懂。。作者写好了脚本。如果我把钱都给了。。游戏一更新。结果脚本出来问题。。我找谁去。你个小 ...
你说他小孩那说明你还是个菜鸟&&都不知道他是谁就说他是小孩 哎
TA的每日心情开心 14:27签到天数: 13 天[LV.3]循序渐进
要写脚本,拿出你的诚意,担保交易的方式很多。
没有人会在没有任何安全保障的情况下给你写脚本的。
试问,别人辛辛苦苦半个月给你做好了,你一句,不要了,不合适,别人就得白干么?
想双方都安全走淘宝或者其他担保,大家都有保障。
站长推荐 /2
你我的TC,积极帮助新手的用户将送予TC代金券奖励.
如果您的回帖可以帮助用户解决问题并且帖子被楼主采纳的,每一个问题,TC官方将给予1个TC代金券的奖励,希望大家踊跃帮其他会员解决难题,只要多多帮助新手,也可以获取TC币来购买VIP或者注册码服务.
集中商业化管理模式,注册码用户可以生成商业版的EXE
安全性:采用服务器网络验证,动态混合加密模式,目前业界最安全的加密模式
保护机制:为脚本被检测提供了很大的保障
自动更新服务:客户端自动更新,免去了作者为脚本更新的烦恼
Powered by 湖南长沙异次元网络科技有限公司