unity3d 里复制对象本身的一个奇怪问题

在项目中我需要将一个对象进行复制,于是我在代码中设置了一个绑定字段,将自己拖上去,然后

child = Instantiate (this.childSelector);

child.gameObject.name = "child";
if (child != null) {
child.transform.SetParent(this.transform);
child.transform.localScale = Vector3.one;
child.transform.localPosition = getChildLoc();
}

child.setPokers (pokers, samePoker, this.ps, chain, root==null?this:root, cTypes);


这里的一个逻辑是将复制出的作为自己的子级显示。于是这就产生了一个问题。由于拖放的绑定是自己,所以这个引用指向并不是库里的对象。而自己本身。这就会导致在第二次再复制时会将自己已经加了子级的对象再复制一次,这就像两个镜子对着照一样,如此往复,越往后越多,无限生长。

就在我写这个记录时,我想到了这个原因如上。之前我还以为是个BUG。 其实这也应该算是一个问题,就是对引用的不明确。我希望的是像FLASH那样的对自己库中对象的实例化。而在UNITY里则是对自己的复制,并且应该只在我这种使用方式下会出这种问题。但在架构上,这确实是由于引用产生了不明确指向导致的,在把自己当作本体对象时,无法指定到底是自己的实例还是自己的预制体。


问题解决的办法比较笨,但简单,就是复制2个一样的,然后互相拖另一个为复制体。先这样吧,时间紧,任务重,没时间去深究。能实现再说了!

你可能感兴趣的:(unity3d)