Aktualizacja vs LateUpdate

W Unity funkcje Aktualizuj i LateUpdate są powszechnie używane do aktualizacji zachowania obiektów w scenie i chociaż służą podobnym celom, istnieją zasadnicze różnice między dwa.

'Update'

Funkcja 'Update' jest wywoływana raz na ramkę i jest używana do większości zadań ogólnego przeznaczenia, takich jak obsługa input i obiektu ruch. Należy zauważyć, że 'Update' nie zależy od liczby klatek na sekundę, co oznacza, że ​​może różnić się czasem wykonania w zależności od wydajności.

void Update()
{
    // Input handling
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    
    // Movement
    Vector3 movement = new Vector3(horizontalInput, 0, verticalInput);
    transform.Translate(movement * speed * Time.deltaTime);
    
    // General-purpose tasks
    // ...
}

W powyższym przykładzie pobieramy dane wejściowe z osi poziomej i pionowej i używamy ich do kontrolowania ruchu obiektu. Metoda 'Translate' służy do przemieszczania obiektu w określonym kierunku ze stałą prędkością. W ramach funkcji 'Update' można także wykonywać zadania ogólnego przeznaczenia.

„LateUpdate”

Funkcja 'LateUpdate' jest również wywoływana raz na ramkę, ale jest wykonywana po zakończeniu wszystkich funkcji 'Update'. Jest powszechnie używany, aby upewnić się, że inne aktualizacje, takie jak obiekt ruch lub animacja, zakończyły się przed wykonaniem dodatkowych działań zależnych od tych aktualizacji.

void LateUpdate()
{
    // Camera follow
    Vector3 desiredPosition = target.position + offset;
    transform.position = Vector3.Lerp(transform.position, desiredPosition, smoothness);
    
    // Additional actions after other updates
    // ...
}

W powyższym przykładzie funkcja 'LateUpdate' służy do płynnego podążania kamerą za obiektem docelowym. Zapewnia aktualizację pozycji kamery po przetworzeniu ruchu celu w funkcjach 'Update'. Dodatkowe akcje zależne od zaktualizowanej pozycji obiektu można także wykonać w obrębie 'LateUpdate'.

'Update' vs „LateUpdate”

Kluczowe różnice między funkcjami 'Update' i LateUpdate:

  • 'Update' jest wywoływany jako pierwszy w ramce, po którym następuje LateUpdate.
  • 'Update' nadaje się do większości zadań ogólnego przeznaczenia, w tym do obsługi danych wejściowych, obiektów ruch i operacji niezwiązanych z kamerą.
  • LateUpdate jest powszechnie używany do zadań związanych z kamerą, takich jak płynne podążanie obiektu docelowego lub wykonywanie czynności zależnych od innych aktualizacji.
  • Użycie LateUpdate pomaga zapewnić, że akcje zależne od innych aktualizacji zostaną wykonane po przetworzeniu tych aktualizacji.

Wniosek

Warto zauważyć, że zarówno 'Update', jak i 'LateUpdate' mogą współistnieć w tym samym skrypcie, co pozwala na oddzielenie różnych typów aktualizacji. Zrozumienie różnic i wykorzystanie odpowiedniej funkcji w każdym kontekście pomaga osiągnąć pożądane zachowanie w projektach Unity.