One minute
[Unity] GUILayoutのちょっとしたサンプルコード
お世話になっております。
しゃまとんです。
少し前にエディタ拡張に入門しまして、あれこれと触っているのですが
「これどうやって実装するんだっけ〜〜〜」となることが多々あり、
とりあえず確認できるコードがほしいとなったので、一覧で確認するサンプルを作りました。
本当はこの辺とかでちゃんと学んだほうがいいとは思うのですが、 とりあえずエディタ拡張させろや!!っていう方も是非ご利用ください。
使いそうなもろもろを入れ込んでます。
一応、動作確認してみたものを載せておきます。(見切れてしまっているものがありますがご容赦ください(;・∀・))

以下はコードです。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections; | |
using System.Collections.Generic; | |
using System.IO; | |
using UnityEditor; | |
using UnityEngine; | |
namespace EditorExtension { | |
public class EditorExtensionSample : EditorWindow { | |
public int vIntField; | |
public int vIntPopup; | |
public int vIntSlider; | |
public float vFloatField; | |
public float vfloatSlider; | |
public Vector2 vMinMax = new Vector2(5f, 7.5f); | |
public string vTextField = string.Empty; | |
public string vPassword = string.Empty; | |
public bool isToggle; | |
public Vector3 vVector3; | |
public Rect vRect; | |
public enum SampleEnum { | |
A, | |
B, | |
C | |
} | |
public SampleEnum vEnumField; | |
public SampleEnum vEnumPopup; | |
public int vLayerField; | |
public int vMaskField; | |
public Color vColor = Color.red; | |
public GameObject vGameObject; | |
public AnimationCurve vAnimationCurve = AnimationCurve.EaseInOut(0, 0, 1, 1); | |
public bool isFoldout; | |
///////////////////////////////////////////////////////////////////////////////////////////////// | |
/// <summary> | |
/// メニュー実行時. | |
/// </summary> | |
///////////////////////////////////////////////////////////////////////////////////////////////// | |
[MenuItem("Shamaton/ExtensionSample")] | |
static void OnOpenFromMenu() { | |
// ウインドウを作成 | |
EditorExtensionSample window = EditorWindow.GetWindow<EditorExtensionSample>(); | |
window.Initialize(); | |
} | |
///////////////////////////////////////////////////////////////////////////////////////////////// | |
/// <summary> | |
/// 初期化 | |
/// </summary> | |
///////////////////////////////////////////////////////////////////////////////////////////////// | |
void Initialize() { | |
titleContent = new GUIContent("ExSample"); | |
} | |
///////////////////////////////////////////////////////////////////////////////////////////////// | |
/// <summary> | |
/// ウインドウ制御 | |
/// </summary> | |
///////////////////////////////////////////////////////////////////////////////////////////////// | |
void OnGUI() { | |
GUILayout.BeginVertical(); | |
EditorGUILayout.Separator(); | |
vIntField = EditorGUILayout.IntField("IntField", vIntField); | |
vIntSlider = EditorGUILayout.IntSlider("IntSlider", vIntSlider, 1, 500); | |
vIntPopup = EditorGUILayout.IntPopup("IntPopup", vIntPopup, new string[]{"t", "e", "s", "t"}, new int[]{1, 3, 5, 7} ); | |
vFloatField = EditorGUILayout.FloatField("FloatField", vFloatField); | |
vfloatSlider = EditorGUILayout.Slider("FloatSlider", vfloatSlider, 1f, 5f); | |
EditorGUILayout.MinMaxSlider( new GUIContent("MinMaxSlider"), ref vMinMax.x, ref vMinMax.y, 0.0f, 10.0f); | |
vTextField = EditorGUILayout.TextField("TextField", vTextField); | |
vPassword = EditorGUILayout.PasswordField("PasswordField", vPassword); | |
isToggle = EditorGUILayout.Toggle("Toggle", isToggle); | |
vVector3 = EditorGUILayout.Vector3Field("Vector3Field", vVector3); | |
vRect = EditorGUILayout.RectField("RectField", vRect); | |
vEnumField = (SampleEnum)EditorGUILayout.EnumMaskField("EnumMaskField", vEnumField); | |
vEnumPopup = (SampleEnum)EditorGUILayout.EnumPopup("EnumPopup", vEnumPopup); | |
vLayerField = EditorGUILayout.LayerField("LayerField", vLayerField); | |
vMaskField = EditorGUILayout.MaskField("MaskField", vMaskField, new string[]{"s", "h", "a"} ); | |
// 色 | |
vColor = EditorGUILayout.ColorField("Color", vColor); | |
vGameObject = (GameObject)EditorGUILayout.ObjectField("ObjectField", vGameObject, typeof(GameObject), false); | |
// アニメーションカーブ | |
vAnimationCurve = EditorGUILayout.CurveField("CurveField", vAnimationCurve); | |
bool isPush = GUILayout.Button("button", GUILayout.Width(100f)); | |
if (isPush) { | |
Debug.Log("is push !!"); | |
} | |
isFoldout = EditorGUILayout.Foldout(isFoldout, "FoldOut"); | |
if (isFoldout) { | |
EditorGUILayout.LabelField("Label", "Field"); | |
EditorGUILayout.Space(); | |
EditorGUILayout.HelpBox("help box", MessageType.Info); | |
EditorGUILayout.HelpBox("help box", MessageType.Warning); | |
EditorGUILayout.HelpBox("help box", MessageType.Error); | |
} | |
GUILayout.EndVertical(); | |
} | |
} | |
} |
エディタ拡張できるようになると開発効率をあげられそうなので、是非覚えたいところですね!以上です。