Câu trả lời:
FixedUpdate
có thể chạy nhanh hơn hoặc chậm hơn Update
tùy thuộc vào cài đặt của bạn. Điều đó sẽ phụ thuộc vào tải (tốc độ Update
chạy) và tốc độ bạn đã đặt FixedUpdate
(tìm thấy trong Chỉnh sửa-> Cài đặt dự án-> Thời gian). Lý tưởng nhất, vì Update
được chạy một lần trên mỗi khung, đây là nơi bạn muốn chụp đầu vào. Nếu bạn cần hành động theo đầu vào trong FixedUpdate
phương thức (như điều khiển các cơ thể vật lý), hãy đặt cờ Update
sau đó xử lý chúng trong FixedUpdate
:
bool leftMouseDown = false;
void Update()
{
if(Input.GetMouseButtonDown(0))
leftMouseDown = true;
}
void FixedUpdate()
{
if(leftMouseDown )
{
//update physics bodies with input
leftMouseDown = false;
}
}
Việc kiểm soát vật lý từ FixedUpdate
phương pháp vẫn là một ý tưởng tốt , vì không có khả năng vật lý cần được cập nhật thường xuyên và vật lý trên một bản cập nhật cố định dễ dự đoán hơn (tính xác định ) so với vật lý trên một bản cập nhật biến.
FixedUpdate
. Đó là một trong những điều cần thử nghiệm chơi để thực sự tìm ra "cảm giác" nào đúng.
Bạn cần hiểu những gì mỗi người làm. Update()
được gọi thường xuyên nhất có thể (không chắc chắn, có thể nó có thể được giới hạn), dù bằng cách nào - mỗi khung. FixedUpdate()
được gọi là mỗi lượng thời gian không đổi (do đó "cố định").
Đầu vào đi vào Update()
, đơn giản như vậy (vì như bạn nhận thấy FixedUpdate()
có thể không bắt được sự kiện đầu vào). Logic trò chơi tuy nhiên có thể đi vào một trong hai. Vật lý cần phải có tính quyết định và đó là lý do tại sao nó phải ở trong đó FixedUpdate()
. Những thứ khác không phải. Tùy thuộc vào cách sử dụng mà bạn phải quyết định chức năng nào là phù hợp.
Ngoài ra, đáng để nói rằng một số ứng dụng có tất cả cập nhật logic trò chơi FixedUpdate()
(thậm chí bên ngoài Unity
) - nó được gọi là "vòng lặp trò chơi bước cố định". Có tất cả mã cập nhật trong một chức năng bước cố định mang lại cho bạn tính quyết định và làm cho ứng dụng của bạn có nhiều khả năng hoạt động theo cùng một cách mỗi lần (và trên mỗi thiết bị). Cũng cho phép một số tính năng ưa thích, như replay.