luc1412 Geschrieben 20. Januar 2020 Melden Share Geschrieben 20. Januar 2020 Wie kann ich in meinem Programm X Sekunden warten, bevor das Objekt wieder zu sehen ist? Ich habe schon einige sogennanten Möglichkeiten ausprobiert, keine hat jedoch funktioniert, da sie alle aus dem Jahre 2010 waren😭 Hoffe auf Hilfe 😁 MfG Luc Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KaBau Geschrieben 20. Januar 2020 Melden Share Geschrieben 20. Januar 2020 Nutze invoke https://docs.unity3d.com/ScriptReference/MonoBehaviour.Invoke.html Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 21. Januar 2020 Melden Share Geschrieben 21. Januar 2020 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 More sharing options...
luc1412 Geschrieben 21. Januar 2020 Autor Melden Share Geschrieben 21. Januar 2020 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? 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 More sharing options...
KaBau Geschrieben 21. Januar 2020 Melden Share Geschrieben 21. Januar 2020 Hi, wenn du mehrere Aktionen nacheinander starten möchtest macht es wirklich mehr Sinn, wie @Sascha vorgeschlagen hat, mit einer Coroutine zu arbeiten. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KaBau Geschrieben 21. Januar 2020 Melden Share Geschrieben 21. Januar 2020 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 More sharing options...
KaBau Geschrieben 21. Januar 2020 Melden Share Geschrieben 21. Januar 2020 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 More sharing options...
luc1412 Geschrieben 22. Januar 2020 Autor Melden Share Geschrieben 22. Januar 2020 @KaBau erstmal vielen Dank für das Script, probiere ich gleich heute Mittag aus . Und ja, mit (true) macht es wahrscheinlich mehr Sinn 😁 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
luc1412 Geschrieben 22. Januar 2020 Autor Melden Share Geschrieben 22. Januar 2020 Vielen Vielen Dank @Sascha und @KaBau 😁 Das Script funktioniert jetzt genau so, wie ich dass will😍 Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
KaBau Geschrieben 22. Januar 2020 Melden Share Geschrieben 22. Januar 2020 Hallo @Sascha, müssen bei deinem Code Am 21.1.2020 um 01:22 schrieb Sascha: StartCoroutine(Invoker.Invoke(() => am Ende nich zwei "))" stehen? Derzeit werden 3 Klammern geöffnet und nur eine wieder geschloßen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 24. Januar 2020 Melden Share Geschrieben 24. Januar 2020 Stehen doch zwei? Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.