2016-08-31 3 views
0

Unity Hololens Vorschau 5.4.0f3Kinder Taste sendet isPointerInside Info Eltern Knopf

Grundkonfiguration:

- Button 
     - Button 
     - Button 

Alle drei Tasten sind weit voneinander entfernt sind. Wenn ich einen Zeiger auf ein Kind lege, kann ich sehen, dass der übergeordnete Button das isPointerInside im Inspector (Debug-Modus) als wahr erkennt.

Klingt das wie das normale Design oder ein Bug?

Ich verstehe, dass, weil es ein Kind ist, kann es als Erweiterung des Bereichs des Elternteils betrachtet werden, aber es scheint wirklich nicht intuitiv und erfordert einen Hack, um wie erwartet zu arbeiten.

+0

Ja, das ist ein nicht intuitives Verhalten, aber ich habe noch keinen Anwendungsfall dieser Hierarchie gesehen. 'IsPointerInside' führt nur zur Hervorhebung der übergeordneten Schaltfläche, wenn die untergeordnete Schaltfläche markiert ist. beeinflusst das Klickverhalten überhaupt nicht. Brauchen Sie diese Hierarchie wirklich für Buttons? Kannst du nicht einfach so herumarbeiten wie ein Panel für Eltern erstellen und Schaltflächen als Kind hinzufügen. –

+0

Sicher kann ich umgehen, aber es fühlt sich einfach unangemessen an. In meinem Fall muss ich Enter/Exit aktivieren und sowohl Eltern als auch Kind erhalten das gleiche Skript (es ist ein Blicktimer-System, in dem man 1 Sekunde lang anstarrt, um das Ereignis auszulösen). Daher löst meine Kinderschaltfläche auch meine Elternschaltfläche aus. Ich werde die Hierarchie natürlich ändern und mich fragen, ob das das erwartete Verhalten ist. – Everts

Antwort

0

Überprüfen Sie die Einstellungen für den Event-Handler für isPointerInside, es ist wahrscheinlich, dass das Ereignis entweder "sendMessageUpwards" oder nur "sendMessage" verwendet. Wenn dies der Fall ist, wird der Eltern in beiden Fällen die Nachricht erhalten. Sie können diese Nachricht auf dem übergeordneten Element ignorieren, wenn Sie möchten.

+0

Wo würde ich diese Einstellung überprüfen? – Everts

+0

Suchen Sie nach den Schlüsselwörtern "sendMessage" und "sendMessageUpwards" in Ihren C# -Skripten. Wenn sie nicht vorhanden sind, überprüfen Sie die Eigenschaften in den gameObjects und die angehängten Skripts in der unity-IDE –

Verwandte Themen