Jump to content
Unity Insider Forum

Wie finde ich heraus, dass ich den Button gedrückt halte


SchneeSniperLevel

Recommended Posts

Guten Tag :)

Ich habe da ein kleines Problem. Wie finde ich heraus, dass ich ein Button gedrückt halte?
Das Problem ist, wenn ich ein Button drücke schiesst mein Raycast, der an der Maus befestigt ist, immer noch wild in der Gegend umher und löst so weiter Aktionen aus. Dabei will ich nur, dass der Button gedrückt wird und nicht noch weiter Aktionen durch den Raycast ausgelöst werden. Daher brauch ich einen bool Variable, die den Raycast ausschaltet. 
Hab gelesen, dass dies mit dem EventSystem geht. Aber irgendwie auch nicht. Also bei mir :D oder muss ich mit dem Eventsystem weiter probieren?

Beste grüsse

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin!

Welches Input-System benutzt du denn? Beim alten gibt's einfach Input.GetButtonDown bzw. Input.GetKeyDown und fertig. Diese Methoden liefern jeweils nur im ersten Frame true zurück, in dem die Taste gedrückt wurde. Danach muss man die Taste loslassen und noch einmal neu drücken, damit wieder für einen Frame true zurück kommt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Sascha

Besten dank für deine schnelle Antwort. Input.GetButtonDown bzw. Input.GetKeyDown bezieht sich ehre auf die Tastatureingabe? 
Aber ich habe UI Buttons die den Raycast ausschalten sollten, sobald ich den Button drücke.
Nach einer Zeit habe ich zwei Lösungen gefunden. Die erste wäre über das Event System:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class ButtonPressed : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    public bool down;

    public void OnPointerDown(PointerEventData eventData)
    {
        down = false;
    }

    public void OnPointerUp(PointerEventData eventData)
    {
        down = true;
    }
}

Dieses Script kommt dann auf jeden Button in UI und wird im Raycast Script referenziert. Durch die Variable "Down" bekommt man eine bool zurück der bestimmt ob der Button gedrückt ist, oder nicht.
Leider habe ich sehr viele von diesen Button und es wäre sehr unübersichtlich geworden....
Daher habe ich einen 2D Raycast erstellt, der den Haupt Raycast ausschaltet sobald der 2D Raycast auf ein UI Button trifft. So ging es ziemlich gut.


Danke dir :) 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...