1. 程式人生 > >unity3d 裡複製物件本身的一個奇怪問題

unity3d 裡複製物件本身的一個奇怪問題

在專案中我需要將一個物件進行復制,於是我在程式碼中設定了一個繫結欄位,將自己拖上去,然後

child = Instantiate<UIChiBiSelector> (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個一樣的,然後互相拖另一個為複製體。先這樣吧,時間緊,任務重,沒時間去深究。能實現再說了!