2016-04-15 399 views
1

我正在Unity中创建一个库存系统,而且我一直对一个令人头疼的谜团感到困惑。当我将我的库存系统中的项目拖回到先前的插槽时,OnMouseEnter功能无法执行。我使用Control Double键盘快捷键创建了三个插槽。它们被命名为“插槽”,“插槽(1)”和“插槽2”。 当我将我的物品拖到插槽(1)时,我无法将其拖回第一个插槽“插槽”。当我将我的物品拖到插槽(2)时,我无法将其拖到我的第二个插槽“插槽(1)”。我注意到,当我尝试将项目从“插槽(2)”拖到“插槽(1)”或“插槽”时,OnPointerEnter()方法不会被调用。这是为什么?OnPointerEnter()函数不能正常工作

此库存移动脚本应该工作将项目的父项设置到鼠标拖动到的位置,然后将其定位到本地位置的Vector3.Zero。 InventoryController脚本附加到UIImage库存中,SlotController脚本附加到插槽,并且项目脚本附加到项目的UIImage。我的层次结构,检查员和脚本在图像中位于下方。感谢您帮助我先进!

Item Script

SlotController Script

InventoryController Script

Game View

+0

我认为如果你选择了一个项目,你应该只开始拖动('OnBeginDrag')。不要简单地设置'controller.dragging = true'。另外,你在'SlotController'中不需要这个布尔。只需直接访问'controller.dragging'即可。使用update来检查bool可能会导致一个问题,当你在'OnPointerEnter'中检查时bool没有被更新。 –

回答

0

嗯,我能看到你得到一个空引用异常的OnEndDrag。检查控制器对象是否有引用。

+0

我不再收到空引用异常,但我仍然无法将我的物品移回原始插槽@UriPopov –