Unity play mode nie chce się włączyć i pętla "zawsze"

Unity play mode nie chce się włączyć i pętla "zawsze"

Wątek przeniesiony 2022-04-20 23:09 z C# i .NET przez Ktos.

As7887
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

Witam!
Mam pewien problem. A mianowicie chcę aby w grze dana czynność powtarzała się zawsze.
Napisałem taki kod:

Kopiuj
    void Update()
    {
        while (1 < 2)
        {
            transform.Translate(Vector3.forward * 10 * Time.deltaTime);
        }
    }

W Visual Studio nie wyskakują żądne błędy, ale play mode nie chce się załadować włącza się w nieskończoność!
Pomoże ktoś?
screenshot-20220420195759.png

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6968
1

Czynność umieszczona w Update będzie się zawsze powtarzała (dla każdej wyświetlanej klatki) bez konieczności użycia nieskończonej pętli.
Możesz używać pętli while wewnątrz Update, ale dla algorytmów, które kiedyś się kończą.

BTW. zapraszamy do zadawania pytań dotyczących Unity w dziale Gamedev ;)

As7887
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 16
0

@Spine: A masz jakiś pomysł dlaczego playmode się nie włącza?

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6968
1

Kolejność wykonywania metod: https://docs.unity3d.com/Manual/ExecutionOrder.html
Update wykonuje się przed renderowaniem każdej klatki.
Jak Unity wchodzi w Update z pętlą nieskończoną, to nie może nawet pierwszej klatki wyświetlić.
Silnik nie może odetchnąć, bo cały czas wywołuje transform.Translate i nie wyrzuca wyników na ekran.

Przy okazji, zamiast while (1 < 2), lepiej napisać while (true). Oczywiście trzeba to stosować tylko tam, gdzie naprawdę chcemy pętlę nieskończoną.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.