Skip to main content
ARShow
ARShow
 首页 » 资源教程

Unity对象的所有组件深拷贝与粘贴

2016年08月18日 20:57:4116990

Unity对象的所有组件深拷贝与粘贴 资源教程 第1张

一Unity单个组件拷贝

Unity中,经常有对象或预制体,但是想要把某个预制体或对象的组件全部都拷贝到某个新的对象上。 

Unity 虽然已经提供了Copy Component这个功能。

Unity对象的所有组件深拷贝与粘贴 资源教程 第2张

这个功能很不错,可以拷贝粘贴,但是面对某个组件上大量的组件和里面的各种参数调整。

Unity对象的所有组件深拷贝与粘贴 资源教程 第3张

对象或预制体的层级结构深,各层的组件多,参数也纷繁复杂,这个就不太灵光了。 

怎么办呢? 

网络上查出了, asset store上面有这个东西,所可以拷贝的。但是居然要求要5刀啊!

哎呀,不科学啊!!网址就不给出了,因为有我,他们就不再被需要了。 

咋办?

二当前层所有组件的拷贝与粘贴

道理很简单,不就是复制和粘贴么? 

哈哈!!先来简单的,两步走。 

1.拷贝

Unity对象的所有组件深拷贝与粘贴 资源教程 第4张

一句话,就是获取当前选中的对象的组件,然后存储于变量中。

2.粘贴

Unity对象的所有组件深拷贝与粘贴 资源教程 第5张

这里面干了点啥?基本上都是自解释的句子。使用了UnityEditorInternal的ComponentUtility的函数。

Unity对象的所有组件深拷贝与粘贴 资源教程 第6张

然后在编辑器的GameObject下就可以看到Copy Current Components和Paste Current Components两个菜单了,当然还包括他们的快捷键。

由于担心与其他快捷键重复,所以Ctrl,Shift,Alt都是用上了。当然你可以根据自己喜好来决定。

三对象的深度复制与粘贴

上面的当前层的拷贝,已经把当前拷贝一个层的问题解决了。 

深度拷贝,当然要深入到对象或预制体的所有子对象进行拷贝了。 

1. 建立了一个链表来解决层级的问题。

Unity对象的所有组件深拷贝与粘贴 资源教程 第7张

2.拷贝对象组件,包括所有子对象组件内容

Unity对象的所有组件深拷贝与粘贴 资源教程 第8张

3.选择新对象粘贴拷贝内容

Unity对象的所有组件深拷贝与粘贴 资源教程 第9张

稍微罗嗦一下,深度拷贝与粘贴组件都使用了递归调用。

粘贴的递归过程中,首先粘贴了当前层级的所有组件,方法仍旧使用的是第一种拷贝粘贴的方法。

然后遍历子对象中的对象,递归调用。 

就是这样。

四运行截图

Unity对象的所有组件深拷贝与粘贴 资源教程 第10张

五当前层组件拷贝与粘贴源码

Unity对象的所有组件深拷贝与粘贴 资源教程 第11张

六组件的深度拷贝粘贴源码

Unity对象的所有组件深拷贝与粘贴 资源教程 第12张

Unity对象的所有组件深拷贝与粘贴 资源教程 第13张

七硬广

源码的Github地址:https://github.com/cartzhang/CopyComponents 

其实,也想收费的,像去Asset store上写个5刀一样。 

但是,跟朋友说起来的时候,才发觉已经上传到Github上了。作为程序员的手太快了,希望分享自己的代码和成果。 程序员面薄,第一次,但是还是要挣点奶粉钱!谢谢各位!



评论列表暂无评论
发表评论