2

いくつかのフラグを含む変数があり、どのフラグが設定されているかを確認する方法を知っています。

私のフラグ。

[Flags]
    public enum Button{ 
        //Can't have more than 30 flags
        //If an enum is added or deleted need to change for loop in method AddButton

        // Exit flags
        Exit = 1 << 0, 
        Cancel = 1 << 1, 
        Abort = 1 << 2,
        Close = 1 << 3,

        //Proced flags
        Accept = 1 << 4, 
        Ok = 1 << 5,
        Submit = 1 << 6,

        //Question flags
        No = 1 << 7,
        Yes = 1 << 8,

        //Save and load
        Save = 1 << 9,
        SaveAll = 1 << 10,
        SaveNew = 1 << 11,
        Open = 1 << 12,
        Load = 1 << 12
    }

そして、ここでフラグをチェックします

    for (int i = 1; i <= 12; ++i) {
        if((buttons & 1 << i) == 1 << i){

        }
    }

どうやら、この方法を使用してフラグを確認することはできません。

明確にするために、ボタンに設定されているフラグを知りたいです。

更新: Unity でゲームを作成し、Mono を使用しているため、Enum.hasFlag() を使用できません。どうやら Mono は hasFlag をまだサポートしていないようです。

4

2 に答える 2

1

にキャストbuttonsするだけintです。また、ループが で始まることを確認したい場合があります。そうしないと0、チェックを 1 つ見逃すことになります。

for (int i = 0; i <= 12; ++i)
{
    if (((int)buttons & 1 << i) == 1 << i)
    {

    }
}
于 2015-06-04T18:04:25.693 に答える