Mục tiêu
Thống nhất về cách sử dụng Debug
Dễ dàng quản lý debug cũng như tối ưu performance của ứng dụng
Tổ chức
Class DebugMonkey
Giải thích tăng hiệu năng
1. Vấn Đề Hiệu Năng Khi Debug
Trong Unity, việc sử dụng Debug.Log
, Debug.LogWarning
, và Debug.LogError
có thể gây ảnh hưởng đến hiệu suất của game, đặc biệt là trên mobile hoặc build final. Nguyên nhân chính:
- Chuỗi string được tạo dù log có hiển thị hay không
Ví dụ khi debug theo cách truyền thống:
Debug.Log("Player position: " + player.transform.position.ToString());
Dù bạn có tắt debug khi build, nhưng chuỗi "Player position: ..." vẫn được tạo, gây tốn bộ nhớ và CPU không cần thiết.
2. Giải Pháp DebugMonkey
Class DebugMonkey sử dụng biểu thức lambda (Func<string>) và điều kiện Conditional để tối ưu hiệu năng debug, ví dụ việc sử dụng DebugMonkey
DebugMonkey.Log(() => "Player position: " + player.transform.position);
Nếu điều kiện hiển thị Debug bị tắt , hàm Log() bị loại bỏ hoàn toàn khỏi build (tương đương với việc code không tồn tại)
Cách dùng
Sử dụng DebugMonkey với các phương thức tương tự Debug của Unity, lưu ý là sử dụng lamda cho nội dung debug như ảnh trên.