Jump to content
Unity Insider Forum

wait / warte


luc1412

Recommended Posts

Invoke funktioniert, ist aber aus mehreren Gründen ziemlich doof.

In diesem Fall kannst du auch z.B. aus deiner Start-Methode eine Coroutine machen.

private IEnumerator Start()
{
  yield return new WaitForSeconds(5);
  gameObject.SetActive(false);
}

Für die meisten Anwendungsgebiete von Invoke empfehle ich ansonsten meine Invoker-Klasse: https://gist.github.com/FlaShG/09b80bbc02a4bb6f9e2dda23ff9c5f8d

Damit würde das so aussehen:

private void Start()
{
  StartCoroutine(Invoker.Invoke(() =>
  {
    gameObject.SetActive(false);
  }, 5));
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke für die Hilfe Sascha.

Ich habe es mehrmals versucht, hat jedoch nicht geklappt(ich bin relativ neu in unity, deswegen denke ich dass ich es falsch gemacht habe).

Gibt es nicht eine einfachere Funktion wie z.b ( wait 5 seconds ) oder so etwas?

 

waitxseconds.thumb.png.a7f9b58a32c26cc7cd316ec91c6e3572.png

 

Auf jeden fall ist mein ziel, dass in meinem homescreen die buchstaben nacheinander gezeigt werden, als ob jmd es schreibt.

dass versuche ich mit  ( gameObject.SetActive(true/false); ) weiß jedoch nicht ob dass auch der richtige Befehl ist.

Falls möglich würde ich mich über die Rückmeldung, ob der oben genannte script funktioniert und ein fertiges script(da ich allein daran verzweifle) sehr sehr freuen.

MfGLuc

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich es richtig gemacht habe, sollte es z.B. bei dir so sein:

[SerializeField] // damit werden die Variablen im Inspector angezeigt
    float time1, time2, time3; // die verschiedenen Wartezeiten
    [SerializeField]
    GameObject letter1; // der erste Buchstabe
    [SerializeField]
    GameObject letter2;
    [SerializeField]
    GameObject letter3;

    void Start()
    {
        StartCoroutine (Ausschalten()); // die Coroutine wird gestartet
    }

    private IEnumerator Ausschalten() // das hier ist die Coroutine
    {
        yield return new WaitForSeconds(time1); // es wird die erste Wartezeit gewartet
        letter1.SetActive(false); // der erste Buchstabe wird ausgeschaltet. Von jetzt auf gleich. Ein Ausblenden passiert nicht. 

        yield return new WaitForSeconds(time2);
        letter2.SetActive(false);

        yield return new WaitForSeconds(time3);
        letter3.SetActive(false);
    }

Was mich wundert: du willst etwas zeigen, nutzt aber "false" es soll doch sicher "true" sein - oder?
Eventuell macht es Sinn im Start ersteinmal alle GameObjekte auf "false" zu schalten, um sie dann in der Coroutine wieder auf "true" zu stellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Für Coroutines wurde mir damals in diesem Thema geholfen (besonders der Beitrag von Sascha). Dabei wollte ich aber nicht nur eine Befehl nach dem anderen zeitversetzt ausführen, sondern es sollte innerhalb einer Zeitspanne etwas passieren. Eventuell hilft dir das ja an anderer Stelle weiter.

Und ja, ich habe nun 3x hintereinander geantwortet. Lag daran, dass ich zuerst am Tablet war und mir später zu diesem Thema zeitversetzt noch etwas eingefallen ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...