Respostas:
FixedUpdate
pode correr mais rápido ou mais devagar do que Update
dependendo das suas configurações. Isso dependerá da carga (a velocidade da Update
execução) e da velocidade que você definiu FixedUpdate
(encontrado em Editar-> Configurações do projeto-> Tempo). Idealmente, como Update
é executado uma vez por quadro, é aqui que você deseja capturar a entrada. Se você precisar agir de acordo com a entrada do FixedUpdate
método (como controlar corpos físicos), defina sinalizadores Update
e lide com eles FixedUpdate
:
bool leftMouseDown = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
leftMouseDown = true;
}
void FixedUpdate()
{
if(leftMouseDown )
{
//update physics bodies with input
leftMouseDown = false;
}
}
Ainda é uma boa idéia controlar a física a partir do FixedUpdate
método, pois é improvável que a física precise ser atualizada com tanta frequência, e a física em uma atualização fixa é muito mais fácil de prever ( determinismo ) do que a física em uma atualização variável.
FixedUpdate
. Essa é uma daquelas coisas que precisam de testes para descobrir o que "parece" certo.
Você precisa entender o que cada um faz. Update()
é chamado o mais rápido possível (não tenho certeza, talvez possa ser limitado), de qualquer maneira - cada quadro. FixedUpdate()
é chamado a cada quantidade constante de tempo (daí "fixo").
A entrada entra Update()
, simples assim (porque, como você notou, FixedUpdate()
pode não capturar o evento de entrada). A lógica do jogo, no entanto, pode ser uma das duas. Física precisa ser determinista e é por isso que ele deve estar em FixedUpdate()
. Outras coisas não precisam. Dependendo do uso, você deve decidir qual função é apropriada.
No entanto, vale a pena dizer que alguns aplicativos têm toda a atualização da lógica do jogo FixedUpdate()
(mesmo fora de Unity
) - é chamada de "loop de jogo com etapa fixa". Ter todo o código de atualização em uma função de etapa fixa fornece determinismo e aumenta a probabilidade de seu aplicativo se comportar da mesma maneira todas as vezes (e em cada dispositivo). Também permite alguns recursos sofisticados, como replays.