[请益] 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