[Unity]Inspectorに複数選択可能なポップアップメニューを表示する

  • Day:2012.12.07 19:12
  • Cat:Unity
Inspectorに複数選択可能なポップアップメニューを表示するためには
EditorGUILayout.MaskFieldを使用します。

拡張したいコンポーネントのクラス

using UnityEngine;

public class Pokemon : MonoBehaviour
{
public int Type;
}
拡張エディタクラス

using UnityEngine;
using UnityEditor;

[CustomEditor(typeof(Pokemon))]
public class PokemonEditor : Editor
{
private static readonly string[] Types = { "ほのお", "みず", "くさ" };

public override void OnInspectorGUI()
{
var pokemon = target as Pokemon;

pokemon.Type =
EditorGUILayout.MaskField("タイプ", pokemon.Type, Types);

// pokemon.Type == 0 の場合、未選択
// pokemon.Type == 1 の場合、「ほのお」
// pokemon.Type == 2 の場合、「みず」
// pokemon.Type == 3 の場合、「ほのお」「みず」
// pokemon.Type == 4 の場合、「くさ」
// pokemon.Type == 5 の場合、「ほのお」「くさ」
// pokemon.Type == 6 の場合、「みず」「くさ」
// pokemon.Type == 7 の場合、「ほのお」「みず」「くさ」
}
}
ss_20121120191120.png

複数選択可能なポップアップメニューで設定した値を使用したい場合、
下記のようなビット演算を行います。


if ((pokemon.Type & 1 << 0) != 0)
{
Debug.Log("ほのおタイプです。");
}
if ((pokemon.Type & 1 << 1) != 0)
{
Debug.Log("みずタイプです。");
}
if ((pokemon.Type & 1 << 2) != 0)
{
Debug.Log("くさタイプです。");
}
Unity Script Reference – EditorGUILayout.MaskField

Comment

Comment Form
公開設定

Trackback


→ この記事にトラックバックする(FC2ブログユーザー)
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。