2016-04-25 12 views
1

Ich habe ein Objekt mit einem BoxCollider2D, das unter einem Objekt mit einem BoxCollider liegt. (Details ist eine UI (ich benutze NGUI Asset) mit einem BoxCollider auf einem GameObject mit einem BoxCollider2D liegend). Das UI-Objekt verfügt über ein Skript, das OnClick() implementiert, und das GameObject verfügt über ein Skript, das OnMouseDown() implementiert. Wenn ich auf das UI-Objekt klicke, klicke auf Ereignisse, die ebenfalls von GameObject ausgelöst werden.wie man andere als das oberste spielobjekt verhindert erhalten clicked event in einem stacked gameobjects

Ich möchte nur das UI-Objekt Feuerereignis, wenn sie aufeinander stapeln. Wie kann ich das erreichen?

+0

Wenn Sie sagen, dass das Benutzeroberflächenelement OnClick() verwendet, meinen Sie, dass es ein Button-Objekt korrekt ist? –

+0

Ja, es ist eigentlich eine UI-Schaltfläche kommt aus NGUI-Bibliothek – Merkurial

+0

Sie können nicht realistisch "NGUI" in diesen Tagen verwenden. Wechseln Sie in die normale Unity-Benutzeroberfläche. – Fattie

Antwort

1

Fügen UnityEngine.EventSystems; In Ihrer OnMouseDown() Funktion verwenden, fügen Sie if (!EventSystem.current.IsPointerOverGameObject()) dann den gesamten Code setzen, der laufen annehmen wird, wenn die Maus nach unten in der Anweisung if ist.

using UnityEngine.EventSystems; 
public void OnMouseDown() 
{ 
if (!EventSystem.current.IsPointerOverGameObject()) 
{ 
    //Put all your code for your gameobject here 
} 
} 

, die funktionieren sollen, aber wenn es nicht, Video this Video für andere Wege, dies zu tun.

+0

Nur realisiert, dass Sie NGUI verwenden. Meine Lösung ist für Unity UI. Kein Grund, NGUI zu diesem Zeitpunkt zu verwenden, da die neue UI von Unity optimiert ist und genau das kann, was NGUI kann und noch mehr. – Programmer

+0

Ja, eigentlich mache ich Outsourcing und die NGUI-Bibliothek wurde vorher installiert und ich muss sie daher widerwillig weiter benutzen. Die EventSystem-Lösung hat auf NGUI nicht funktioniert, aber vielen Dank für Ihre Unterstützung: D – Merkurial

+0

hey Entschuldigung für das Missverständnis Ich habe keinen Ausruf gemacht, als ich die if-Bedingung schrieb. Vielen Dank für die Lösung! – Merkurial