[請益] unity中gameobject改parent後顯示問題

作者: yabibear (yabi)   2016-07-25 15:24:27
(已解決)
目前再作背包欄跟裝備欄的部分,
想要如果再裝備欄A已經裝備了物品a,
那再拖曳其他物品到裝備欄A時,物品a會被丟回背包欄。
一開始在ItemStroage_Grid(背包)產生三個itemSlot(物品)
http://imgur.com/a/WiFWo
拖曳itemSlot0 (物品a)到裝備欄Eq01_Grid(裝備欄A)。
http://imgur.com/a/8FiJg
再拖曳itemSlot1 (物品b)到裝備欄 Eq01_Grid (裝備欄A),想要把前一個裝備
(itemSlot0 物品a)丟回ItemStroage_Grid (背包)
http://imgur.com/a/KFAxY
在Hierarchy可以看到itemSlot0已經變成ItemStroage_Grid的child.
右邊也顯示他的位置在ItemStroage_Grid裡面,可是圖顯示不出來,
也無法在對itemSlot點擊拖曳等動作。
變換parent我是這樣寫的
NGUITools.FindInParents<UIGrid(gameObject).transform.GetChild(0).
SetParent(GameObject.Find("ItemStroage_Grid").transform);
此時的gameObject="itemSlot1",我是先找他的parent "Eq01_Grid",
再找Eq01_Grid的第一個child "itemSlot0",再改變itemSlot0的parent。
請問這樣可能是哪邊出了問題呢?
作者: wix3000 (癢,好吃)   2016-07-25 18:36:00
itemSlot0.localScale = Vector3. one
作者: chowleft (什麼....)   2016-07-25 18:46:00
UIWidget.CheckParent()
作者: yabibear (yabi)   2016-07-25 20:44:00
wix大試過了沒有效chow大 我找不到checkparent的用法不過我有print(itemSlot0.parent) 來確定parent已經改了
作者: chowleft (什麼....)   2016-07-25 20:56:00
NGUI 物件在執行階段改 parent 記得是沒用的你可直接從hierarchy拖物件到不同Panel試試要讓 Panel 更新物件必須自行通知才行
作者: yabibear (yabi)   2016-07-25 21:02:00
@@ 我的備用方案是destory這個itemSlot在背包在生一個出來 希望這樣不會太花資源通知是指抓到那個panel 執行refresh嗎
作者: chowleft (什麼....)   2016-07-25 21:07:00
itemSlot.GetComponet<UIWidget>().CheckParent();你試試看這樣有沒有編譯錯誤...現在沒 NGUI Orz
作者: yabibear (yabi)   2016-07-25 21:13:00
我的UIWidget方法只有checklayer跟 parent等等<UIWidget>.parent顯示是Panel(UIPanel)
作者: chowleft (什麼....)   2016-07-25 21:15:00
呃....那有 ParentHasChanged() 嗎?
作者: yabibear (yabi)   2016-07-25 21:17:00
有耶
作者: chowleft (什麼....)   2016-07-25 21:18:00
恩...大大可以在拖曳完後,呼叫一下該函式看看嗎?
作者: yabibear (yabi)   2016-07-25 21:20:00
http://imgur.com/a/sqjMU框框有出來了!!!我在移動那個框框 貓咪圖案也會出來我抓itemslot底下的UITEXTURE然後在ParentHasChanges()完全好了 感動QQ 卡了兩天 感謝以上大大的幫忙

Links booklink

Contact Us: admin [ a t ] ucptt.com