2 ポイント 投稿者 clash4970 2025-03-17 | まだコメントはありません。 | WhatsAppで共有

開発背景

Unityゲームを開発したり、C#で標準のEnumのHasFlagを使うたびに、Boxingによってガベージが生成されるのを手軽に防ぐために開発したパッケージです!

動作方式

Source Generatorを利用し、コンパイル時にコードの中から[Flag]を持つenum宣言を見つけて、カスタムのHasFlagNonAlloc拡張メソッドを自動生成します。

機能

ほぼゼロに近いランタイムオーバーヘッドで、読みやすいHasFlagコードを書けるようになります!

var currentState = PlayerState.Idle | PlayerState.Walking;  
  
// 従来のHasFlag (Boxingが発生)  
if (currentState.HasFlag(PlayerState.Idle))  
{  
    // ...  
}  
  
// Boxingを避けるHasFlagチェック実装  
if ((currentState & PlayerState.Idle) == PlayerState.Idle)  
{  
    // ...  
}  
  
// NonAllocFlagGenerator導入後  
if (currentState.HasFlagNonAlloc(PlayerState.Idle))  
{  
    // ...  
}  

初めて作る本格的な(?)オープンソースプロジェクトなので至らない点も多いですが、思い切って公開してみます!
性能に敏感なコードを書くときに役立てばうれしいです。

フィードバックはいつでも歓迎です!

まだコメントはありません。

まだコメントはありません。