2016-04-15 20 views
1

Ich erstelle ein Inventursystem in Unity, und ich bin durch ein lästiges Rätsel verblüfft worden. Die OnMouseEnter-Funktion kann nicht ausgeführt werden, wenn ich das Element in meinem Inventarsystem zurück in die vorherigen Slots verschiebe. Ich habe den Tastaturkurzbefehl Control Double verwendet, um drei Slots zu erstellen. Sie heißen "Slot", "Slot (1)" und "Slot2". Wenn ich meinen Gegenstand zu Slot (1) ziehe, kann ich ihn nicht zurück zum ersten Slot ziehen, "Slot". Wenn ich meinen Gegenstand zu Slot (2) ziehe, kann ich ihn nicht in meinen zweiten Slot "Slot (1)" ziehen. Ich habe festgestellt, dass die Methode OnPointerEnter() nicht aufgerufen wird, wenn ich versuche, das Objekt von "Slot (2)" nach "Slot (1)" oder "Slot" zu ziehen. Warum das?OnPointerEnter() funktioniert nicht richtig

Dieses Skript zum Verschieben von Inventar soll funktionieren, indem das übergeordnete Objekt auf den Slot gesetzt wird, an den die Maus gezogen wird, und es dann in Vector3.Zero in der lokalen Position positionieren. Das InventoryController-Skript ist an das Verzeichnis UIImage angeschlossen, das SlotController-Skript ist an das UIImage Slot angeschlossen, und das Objektskript ist an das Element UIImage angehängt. Meine Hierarchie, Inspektor und Skripte sind unten in Bildern. Danke, dass du mir im fortgeschrittenen Stadium geholfen hast!

Item Script

SlotController Script

InventoryController Script

Game View

+0

Ich denke, Sie sollten nur anfangen zu ziehen ('OnBeginDrag'), wenn Sie ein Element ausgewählt haben. Setzen Sie nicht einfach 'controller.dragging = true'. Außerdem brauchen Sie dieses Bool nicht in 'SlotController'. Greifen Sie einfach direkt auf 'controller.dragging' zu. Die Verwendung von update zur Überprüfung des bool könnte zu einem Problem führen, bei dem das bool nicht aktualisiert wurde, wenn Sie es in 'OnPointerEnter' überprüfen. –

Antwort

0

Nun, ich Sie in OnEndDrag bekommen eine null-Verweisausnahme sehen können. Überprüfen Sie, ob das Controller-Objekt eine Referenz hat.

+0

Ich erhalte nicht mehr die Null-Referenz-Ausnahme, aber ich kann meine Objekte immer noch nicht in ihre ursprünglichen Slots @UriPopov verschieben –