博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3D研究院编辑器之不实例化Prefab获取删除更新组件(十五)
阅读量:7253 次
发布时间:2019-06-29

本文共 3644 字,大约阅读时间需要 12 分钟。

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

感谢楼下的牛逼回复更正一下,我表示我也是才知道。。

其实不需要实例化也能查找,你依然直接用GetComponentsInChildren<>(true),对传true即可。。。这样搞还很麻烦。。。唯一关注是能否把Missing的脚本序列化找出来??

使用 GetComponentsInChildren<>(true) 可以直接把Project视图里的子对象找出来!!!!

return;

代码是这样的

 

今天有朋友说不能删除missing的脚本, 我试了一下确实不行。 随后查了一下, 可以用这个方法来删除,

 

昨天晚上睡觉的时候脑洞打开。因为做项目的时候我们可能要在编辑器上做很多检查工具一类的东西。 这里我说几个典型的例子,比如空的Animation组件、丢失的脚本、没用的meshCollider组件。这些东西我们是不需要的,但是美术可能不会不小心加到prefab里。

以前的做法是 先要把Prefab 实例化 Instance以后  然后  GetComponentsInChildren  把所有的组件都取出来。 在进行遍历删除。 然后还要DestroyImmediate 它。 。那么如果prefab数量比较多的话,那么检查一次时间是很漫长的。

如果你只是想找组件 空脚本 一类的。用如下代码就可以不实例化并且找出来。

 

如果你想不实例化并且修改数据的话,那么可以考虑用下面的方法。

1.先把prefab 序列化的方式改成text 用File就可以把prefab的文本信息读出来。

 

2.prefab文本序列化的结构,如下图所示,看到!u!111了吗  111 是一组id .它是有意义的(它表示Animation),标着着这个组件是个啥东西。 具体是什么含义大家可以去这里查 

 

3.自定义脚本

如果我想查一下看看prefab有没有绑定我自己写的脚本怎么办呢?如下图所 ,guid这一栏 就写的是你的脚本的guid了。

 

然后在脚本对应的mate文件里就记录这这个脚本的guid ,如果这两个id匹配,那么就说明这个prefab里挂着这个脚本了。

 

最后就交给正则表达式做第一步的匹配吧。 这样的话第一步就可以筛选掉一大批prefab了。 如果还需要进行验证在进一步的Instance来检查吧。。

转载于:https://www.cnblogs.com/alps/p/5503646.html

你可能感兴趣的文章
java基础:11.1 递归
查看>>
Educational Codeforces Round 27
查看>>
Java根据链接生成二维码
查看>>
前台上传文件小优化,上传文件的文件名放到输入框中展示
查看>>
Python3学习笔记22-文件读写
查看>>
老菜鸟苦战oracle asm
查看>>
SUSE LINUX下文件系统变只读的问题解决
查看>>
awk多维数组案例多角度解决实战
查看>>
《跟菜鸟学Cisco UC部署实战》-第 2 章 部署基本环境(一共12章,免费)
查看>>
DDOS***类型以及iptables防范ddos脚本
查看>>
使用顶层架构方法论进行航母作战模拟
查看>>
HSRP和VRRP基本工作原理
查看>>
SystemCenter2012SP1实践(4)安装SCVMM
查看>>
Windows Server 2012初阶安装使用记录
查看>>
正则表达式相关:C# RichTextBox显示html文本内容
查看>>
利用for循环打印实心棱形和空心棱形
查看>>
GRE over IPSEC 同时NAT-T(PAT)
查看>>
Linux Container (LXC)
查看>>
SQL Server 数据文件存储结构
查看>>
ipsec *** 多对等体
查看>>