こんにちは、SAT-BOXのこうもりです。
今日のテーマは「便利なビット演算を使おう!」です。
名前は聞いたことあるけど、どうにも面倒くさそうという理由で、敬遠してはいないでしょうか?
実は私はその質でしたが、大量の類似したフラグの管理が大変で、改めて調べて実際に使ってみると非常に簡単で便利でした。
ですので、皆さんもぜひこの機会にビット演算の簡単な使い方を覚えてみてはいかがでしょうか?
public enum SAMPLE_FLG{
FLG_1 = 1 << 0,
FLG_2 = 1 << 1
}
void Start(){
var flg = SAMPLE_FLG.FLG_1;
// FLG_1がたっているかを確認
if( ( flg & SAMPLE_FLG.FLG_1 ) != 0 ){
Debug.Log("FLG_1がたっている");
}
// FLG_2をたてる
flg |= SAMPLE_FLG.FLG_2;
if( ( flg & SAMPLE_FLG.FLG_2 ) != 0 ){
Debug.Log("FLG_2がたっている");
}
if( ( flg & (SAMPLE_FLG.FLG_1 | SAMPLE_FLG.FLG_2) ) == (SAMPLE_FLG.FLG_1 | SAMPLE_FLG.FLG_2) ){
Debug.Log("FLG_1とFLG_2がたっている");
}
// FLG_2をおろす
flg &= ~SAMPLE_FLG.FLG_2;
if( ( flg & (SAMPLE_FLG.FLG_1 | SAMPLE_FLG.FLG_2) ) == (SAMPLE_FLG.FLG_1 | SAMPLE_FLG.FLG_2) ){
Debug.Log("FLG_1とFLG_2がたっている");
}
if( ( flg & (SAMPLE_FLG.FLG_1 | SAMPLE_FLG.FLG_2) ) != 0 ){
Debug.Log("FLG_1またはFLG_2がたっている");
}
}
こんな感じで使うことができます。
ビット演算を使えば共通する項目、例えば火傷や麻痺、毒等の状態異常の有無や、武器スロットの使用の有無、イベント達成の有無等のフラグ管理が分かりやすくなると思いますのでおすすめです。
皆さんも、ぜひ使ってみてはいかがでしょうか?
今日はこれでおしまいです。
皆さん楽しいゲームライフを送りましょう!
ワクワクできるアプリをガンガン開発リリース中!
ホームページはこちら↓