Version: 5.3 (switch to 5.4b)
言語English
  • C#
  • JS

スクリプト言語

好きな言語を選択してください。選択した言語でスクリプトコードが表示されます。

EditorGUILayout.EnumMaskField

フィードバック

ありがとうございます

この度はドキュメントの品質向上のためにご意見・ご要望をお寄せいただき、誠にありがとうございます。頂いた内容をドキュメントチームで確認し、必要に応じて修正を致します。

閉じる

送信に失敗しました

なんらかのエラーが発生したため送信が出来ませんでした。しばらく経ってから<a>もう一度送信</a>してください。ドキュメントの品質向上のために時間を割いて頂き誠にありがとうございます。

閉じる

キャンセル

マニュアルに切り替える
public static function EnumMaskField(label: GUIContent, enumValue: Enum, style: GUIStyle, params options: GUILayoutOption[]): Enum;
public static Enum EnumMaskField(GUIContent label, Enum enumValue, GUIStyle style, params GUILayoutOption[] options);
public static function EnumMaskField(label: string, enumValue: Enum, style: GUIStyle, params options: GUILayoutOption[]): Enum;
public static Enum EnumMaskField(string label, Enum enumValue, GUIStyle style, params GUILayoutOption[] options);
public static function EnumMaskField(label: GUIContent, enumValue: Enum, params options: GUILayoutOption[]): Enum;
public static Enum EnumMaskField(GUIContent label, Enum enumValue, params GUILayoutOption[] options);
public static function EnumMaskField(label: string, enumValue: Enum, params options: GUILayoutOption[]): Enum;
public static Enum EnumMaskField(string label, Enum enumValue, params GUILayoutOption[] options);
public static function EnumMaskField(enumValue: Enum, style: GUIStyle, params options: GUILayoutOption[]): Enum;
public static Enum EnumMaskField(Enum enumValue, GUIStyle style, params GUILayoutOption[] options);
public static function EnumMaskField(enumValue: Enum, params options: GUILayoutOption[]): Enum;
public static Enum EnumMaskField(Enum enumValue, params GUILayoutOption[] options);

パラメーター

label このフィールドの Prefix Label
enumValue フラグに使用する enum
options 特別なレイアウト対応をするためのレイアウトオプションリスト。ここに渡された値は style で定義された設定を上書きします。
See Also: GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight.

戻り値

Enum ユーザーによって設定された値

説明

マスクに基づく enum のフィールドを作成します。


Enum Mask Field を表示する簡単な Window

以下は 3 つのオプションを使った EnumMaskField の実装例です。


        
using UnityEngine;
using UnityEditor;

public class EditorEnumExample : EditorWindow { public enum Example { Option_One = 1, //bits: 0000 0001 Option_Two = 2, //bits: 0000 0010 Option_Three = 4 //bits: 0000 0100 }

Example staticFlagMask = 0;

[MenuItem("Examples/Mask Field Usage")] static void Init( ) { // Get existing open window or if none, make a new one: EditorEnumExample window = (EditorEnumExample)EditorWindow.GetWindow( typeof(EditorEnumExample) ); window.Show( ); }

void OnGUI( ) { staticFlagMask = (Example)EditorGUILayout.EnumMaskField( "Static Flags", staticFlagMask );

} }

内部的に、Unity は enum をそれぞれの値がビットマスクである int として保存します。Nothing を選ぶとすべてのビットはクリアされ、整数 0 の値になります。Everything を選ぶとすべてのビットが設定され、整数 -1 の値になります。

ある特定の enum 値が設定されているかを判断するために、enum を int として扱い、ビットワイズかテストを行うか、または、enum 値を走査しそれぞれの enum を再コンストラクトすることによって、Everything の値を設定しなおします。以下の例はその方法を表示しています。


        
using UnityEngine;
using UnityEditor;

public class EditorEnumExample : EditorWindow { public enum Example { Option_One = 1, //bits: 0000 0001 Option_Two = 2, //bits: 0000 0010 Option_Three = 4 //bits: 0000 0100 }

Example staticFlagMask = 0;

[MenuItem("Examples/Mask Field Usage")] static void Init( ) { // Get existing open window or if none, make a new one: EditorEnumExample window = (EditorEnumExample)EditorWindow.GetWindow( typeof(EditorEnumExample) ); window.Show( ); }

void OnGUI( ) { staticFlagMask = (Example)EditorGUILayout.EnumMaskField( "Static Flags", staticFlagMask );

// If "Everything" is set, force Unity to unset the extra bits by iterating through them if( (int)staticFlagMask < 0 ) { int bits = 0; foreach( var enumValue in System.Enum.GetValues( typeof( Example ) ) ) { int checkBit = (int)staticFlagMask & (int)enumValue; if( checkBit != 0 ) bits |= (int)enumValue; }

staticFlagMask = (Example)bits; }

} }