Odpowiedzi:
FixedUpdate
może działać szybciej lub wolniej niż w Update
zależności od ustawień. Będzie to zależeć od obciążenia (szybkości Update
biegu) i prędkości, którą ustawiłeś FixedUpdate
(znajduje się w Edycja-> Ustawienia projektu-> Czas). Idealnie, ponieważ Update
jest uruchamiany raz na klatkę, tutaj chcesz przechwycić dane wejściowe. Jeśli musisz działać na podstawie danych wejściowych w FixedUpdate
metodzie (takich jak kontrolowanie ciał fizycznych), ustaw flagi, Update
a następnie obsłuż je FixedUpdate
:
bool leftMouseDown = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
leftMouseDown = true;
}
void FixedUpdate()
{
if(leftMouseDown )
{
//update physics bodies with input
leftMouseDown = false;
}
}
Nadal dobrym pomysłem jest sterowanie fizyką za pomocą tej FixedUpdate
metody, ponieważ jest mało prawdopodobne, że fizyka musi być aktualizowana tak często, a fizyka przy stałej aktualizacji jest znacznie łatwiejsza do przewidzenia ( determinizm ) niż fizyka przy zmiennej aktualizacji.
FixedUpdate
. Jest to jedna z tych rzeczy, które wymagają testów gry, aby naprawdę dowiedzieć się, co „czuje się” dobrze.
Musisz zrozumieć, co każdy z nich robi. Update()
jest wywoływany tak często, jak to możliwe (nie jestem pewien, może można go ograniczyć), w obu przypadkach - każda klatka. FixedUpdate()
jest wywoływany co stałą ilość czasu (stąd „ustalony”).
Wejście wchodzi w Update()
tak proste (ponieważ, jak zauważyłeś, FixedUpdate()
może nie złapać zdarzenia wejściowego). Logika gry może się jednak przydać. Fizyka musi być deterministyczna i dlatego powinna być FixedUpdate()
. Inne rzeczy nie muszą. W zależności od zastosowania musisz zdecydować, która funkcja jest odpowiednia.
W Althouth warto powiedzieć, że niektóre aplikacje mają zaktualizowaną logikę gry FixedUpdate()
(nawet poza nią Unity
) - nazywa się to „stałą pętlą gry”. Posiadanie całego kodu aktualizacji w funkcji stałego kroku daje determinizm i sprawia, że aplikacja zachowuje się tak samo za każdym razem (i na każdym urządzeniu). Pozwala również na niektóre fantazyjne funkcje, takie jak powtórki.