Cách cập nhật được gọi
Không, Unity không sử dụng System.Reflection để tìm phương thức ma thuật mỗi khi cần gọi một phương thức.
Thay vào đó, lần đầu tiên MonoBehaviour của một loại nhất định được truy cập, tập lệnh cơ bản được kiểm tra thông qua thời gian chạy tập lệnh (Mono hoặc IL2CPP) cho dù nó có bất kỳ phương thức ma thuật nào được xác định và thông tin này được lưu trữ. Nếu MonoBehaviour có một phương thức cụ thể, nó sẽ được thêm vào danh sách phù hợp, ví dụ: nếu tập lệnh có phương thức Cập nhật được xác định, nó sẽ được thêm vào danh sách các tập lệnh cần được cập nhật mỗi khung.
Trong trò chơi, Unity chỉ lặp đi lặp lại qua các danh sách này và thực hiện các phương thức từ nó - đơn giản. Ngoài ra, đây là lý do tại sao nó không quan trọng nếu phương pháp Cập nhật của bạn là công khai hoặc riêng tư.
Đối với các lý do được thực hiện theo cách này, phần lớn tôi sẽ giới thiệu cho bạn (người đọc) câu trả lời của DMGregory , trong đó có sự cân bằng của hai điều cạnh tranh:
- Tối ưu hóa hiệu suất
- Dễ sử dụng nhà phát triển mới
Một nhà phát triển mới chỉ muốn nó hoạt động và không muốn phải tìm ra "làm thế nào để tôi kết nối điều này với hệ thống sự kiện?" nhưng nó vẫn nên chạy nhanh với chi phí tối thiểu.
Giải pháp có lẽ là tốt nhất có thể đạt được trong hai hạn chế này. Hoặc ít nhất, điều tốt nhất mà nhóm phát triển Unity có thể đưa ra vào thời điểm đó. Chúng tôi có thể không bao giờ biết.