2 điểm bởi clash4970 2025-03-17 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Bối cảnh phát triển

Đây là gói được tạo ra để dễ dàng tránh việc phát sinh garbage do Boxing mỗi khi dùng HasFlag của Enum cơ bản khi phát triển game Unity hoặc sử dụng C#!

Cách hoạt động

Bằng cách sử dụng Source Generator, trong quá trình biên dịch gói sẽ tìm các khai báo enum[Flag] trong mã và tự động sinh ra phương thức mở rộng HasFlagNonAlloc tùy chỉnh.

Tính năng

Bạn có thể viết mã HasFlag dễ đọc với chi phí runtime gần như bằng không!

var currentState = PlayerState.Idle | PlayerState.Walking;  
  
// HasFlag hiện có (phát sinh Boxing)  
if (currentState.HasFlag(PlayerState.Idle))  
{  
    // ...  
}  
  
// Cách triển khai kiểm tra HasFlag để tránh Boxing  
if ((currentState & PlayerState.Idle) == PlayerState.Idle)  
{  
    // ...  
}  
  
// Sau khi cài đặt NonAllocFlagGenerator  
if (currentState.HasFlagNonAlloc(PlayerState.Idle))  
{  
    // ...  
}  

Đây là dự án mã nguồn mở đúng nghĩa đầu tiên tôi làm nên vẫn còn nhiều thiếu sót, nhưng tôi mạnh dạn chia sẻ lên đây!
Hy vọng nó sẽ hữu ích khi bạn viết các đoạn mã nhạy cảm về hiệu năng.

Mọi phản hồi đều rất được hoan nghênh!

Chưa có bình luận nào.

Chưa có bình luận nào.