Cập nhật so với FixUpdate so với LateUpdate

Phần nổi bật của Unity API là các hàm cập nhật, là các hàm chạy liên tục.

Unity có ba loại chức năng cập nhật: 'Update', FixedUpdate và LateUpdate.

'Update' vs FixedUpdate

Sự khác biệt giữa các hàm 'Update' và FixedUpdate là ở tần suất chúng chạy.

Hàm 'Update' chạy một lần trên mỗi khung hình trong khi FixedUpdate chạy ở tốc độ không đổi, được điều khiển bởi giá trị "Fixed Timestamp" trong 'Project Settings' -> 'Time'.

'Update' các chức năng phù hợp để lập trình logic trò chơi, đầu vào của người chơi và về cơ bản mọi phép tính phi vật lý.

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            //Space button has been pressed
        }    
    }

Mặt khác, các hàm FixedUpdate phù hợp với các phép tính dựa trên vật lý, chẳng hạn như Raycasting, tác dụng lực lên Vật cứng hoặc bất kỳ phép tính nào cần độc lập với tốc độ khung hình.

    void FixedUpdate()
    {
        //Use Physics Raycast to detect if there any object in front
        RaycastHit hit;
        if(Physics.Raycast(transform.position, transform.forward, out hit, 10))
        {
            Debug.Log("Object '" + hit.transform.name + "' is currently in front of this object.");
        }
    }

Cập nhật so với LateUpdate

'Update' và LateUpdate giống hệt nhau về tần suất chạy (cả hai đều chạy một lần trên mỗi khung hình), nhưng LateUpdate chạy sau tất cả các hàm 'Update'.

Cuối cùng, chức năng LateUpdate thường được sử dụng để sửa đổi khung mô hình hoạt hình (ví dụ: làm cho mô hình trình phát nhìn lên và xuống) hoặc để triển khai một camera theo dõi mượt mà.

    void LateUpdate()
    {
        //Make camera tagged 'MainCamera' look at this object transform
        Camera mainCamera = Camera.main;
        mainCamera.transform.LookAt(transform);
    }

Mua mang về

Mỗi chức năng cập nhật đều có trường hợp sử dụng riêng.

Sử dụng chúng kết hợp để thực hiện nhiều tình huống khác nhau.

Bài viết được đề xuất
Hướng dẫn về MonoBehaviour trong Unity
Thức so với Bắt đầu
Sử dụng Bộ điều khiển hoạt hình thời gian chạy trong Unity
Danh sách thống nhất các từ khóa hữu ích trong C#
Tìm hiểu các hàm và lệnh gọi phương thức
Giới thiệu về ngôn ngữ kịch bản Unity C#
Tạo câu lệnh có điều kiện (if-else) trong Unity Code