Ablaufender Fortschritt per Update-Event

Bisher ändert sich das UI nur, wenn wir mit der Maus auf das Objekt zeigen. Um z.B. einen Fortschritt zu visualisieren, rufen wir die Synchronisation einfach bei Bedarf auf, z.B. im Update-Ereignis.

Selbstlaufenden Fortschritt integrieren

  • Füge in ObjektMitTitelUndFortschritt.cs ein Update-Ereignis hinzu:
    public void Update()
    {
        fortschritt +=0.1f; 
        EventBus.bus.beiObjektMitTitelAenderung_aufrufen(this);
    }

Am Ende wieder an den Anfang springen

  • Verwende Modulo % 1, um mittels Division mit Rest zu bewirken, dass der Fortschritt am Ende des Laufbalkens wieder an den Anfang umbricht.

  • Ändere Update in ObjektMitTitelUndFortschritt.cs zu:

    public void Update()
    {
        fortschritt +=0.1f; 
        fortschritt = fortschritt % 1;
        EventBus.bus.beiObjektMitTitelAenderung_aufrufen(this);
    }

Langsamer Laufen

  • Multipliziere die Schrittweite (0.1f) mit Time.deltaTime, um die Schrittweite an eine Sekunde zu binden.

    • Beispiel: 0.1f * Time.deltaTime erhöht den Fortschritt im Verlauf einer Sekunde um 0.1.
  • Ändere Update in ObjektMitTitelUndFortschritt.cs zu:

    public void Update()
    {
        fortschritt +=0.1f * Time.deltaTime; 
        fortschritt = fortschritt % 1;
        EventBus.bus.beiObjektMitTitelAenderung_aufrufen(this);
    }

Update auf MausOver beschränken

  • Füge eine bool-Variable in ObjektMitTitel.cs ein, die den Mauszustand speichert:
    protected bool mausUeberObjekt = false;

    public void OnMouseEnter() // Unity-Nachricht: Unity weiß schon automatisch, wann es diese Funktion aufrufen muss
    {
        EventBus.bus.beiObjektMitTitelAenderung_aufrufen(this); 
        mausUeberObjekt = true;
    }

    public void OnMouseExit()
    {
        EventBus.bus.beiObjektMitTitelAenderung_aufrufen(null); 
        mausUeberObjekt = false;
    }
  • Beschränke die EventBus-Benachrichtigung in ObjektMitTitelUndFortschritt.cs auf den Mauszustand:
    public void Update()
    {
        fortschritt += (0.5f * Time.deltaTime); // im Verlauf einer Sekunde Fortschritt um 0.5 hochzählen
        fortschritt = fortschritt % 1; // Mit modulo-Operation (=Rest der Division) sicherstellen, dass der Wert zwischen 0 und 1 bleibt.

        if (mausUeberObjekt)
        {
            EventBus.bus.beiObjektMitTitelAenderung_aufrufen(this);
        }
    }

Anhänge

Die hier gezeigten Lektionen sind eine Auswahl von Inhalten aus mehreren verschiedenen kostenpflichtigen Kursen. Um alle Inhalte zu sehen, müssen mehrere Kurse gekauft werden. Änderungen und Aktualisierungen der Kursinhalte werden auf dieser Seite möglicherweise nicht oder nicht sofort dargestellt. Die kostenpflichtigen Udemy-Kurse enthalten neben den Videos auch Übungen, Textartikel, weitere Materialien, sowie ein Support-Forum für Fragen. Vereinzelt kann eine Lektion im mehreren Kursen gleichzeitig enthalten sein. Wenn etwas unklar ist, stelle Deine Frage per E-Mail an rene@gamedev-profi.de .