Unity编辑器扩展基础三、EditorGUILayout (三)

您所在的位置:网站首页 unity下拉菜单 Unity编辑器扩展基础三、EditorGUILayout (三)

Unity编辑器扩展基础三、EditorGUILayout (三)

2023-02-19 14:40| 来源: 网络整理| 查看: 265

小结:

1、画下拉框的方法有DropdownButton、EnumMaskField、EnumPopup、IntPopup、Popup、EnumMaskPopup、MaskField,DropdownButton比较麻烦,EnumMaskField、EnumMaskPopup、MaskField可以多选。

2、画Slider的都没什么区别,只是MinMaxSlider是取值范围。

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; /// /// Unity 5.6 /// public class EditorGUILayoutOtherExample : EditorWindow { //PropertyField GetControlRect PrefixLabel [MenuItem("EditorGUILayout/EditorGUILayoutOtherExample")] static void Init() { EditorGUILayoutOtherExample window = (EditorGUILayoutOtherExample)EditorWindow.GetWindow(typeof(EditorGUILayoutOtherExample)); window.Show(); } #region DropdownButton private string m_itemString = ""; #endregion #region EnumMaskField public enum Example { Option_One = 1, //bits: 0000 0001 Option_Two = 2, //bits: 0000 0010 Option_Three = 4 //bits: 0000 0100 } Example staticFlagMask = 0; #endregion #region EnumPopup public enum OPTIONS { CUBE = 0, SPHERE = 1, PLANE = 2 } public OPTIONS op; #endregion #region IntPopup int selectedSize = 1; string[] names = new string[] { "Normal", "Double", "Quadruple" }; int[] sizes = new int[]{1, 2, 4}; #endregion #region Popup public string[] options = new string[] { "Cube", "Sphere", "Plane" }; public int index = 0; #endregion #region EnumMaskPopup public enum Options { CUBE = 0, SPHERE = 1, PLANE = 2 } public Options m_options; #endregion #region InspectorTitlebar bool fold = true; bool fold2 = true; Transform selectedTransform; GameObject selectedGameObject; #endregion #region IntSlider int m_intSlider = 1; #endregion #region IntSlider float scale = 0.0f; #endregion #region MinMaxSlider float minVal = -10; float maxVal = 10; float minLimit = -20; float maxLimit = 20; #endregion #region PasswordField string m_passwordField = ""; #endregion void OnGUI() { #region DropdownButton //比较麻烦 EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("DropdownButton:"); if (EditorGUILayout.DropdownButton(new GUIContent(m_itemString), FocusType.Keyboard)) { var alls = new string[4] { "A", "B", "C", "D" }; GenericMenu _menu = new GenericMenu(); foreach (var item in alls) { if (string.IsNullOrEmpty(item)) { continue; } //添加菜单 _menu.AddItem(new GUIContent(item), m_itemString.Equals(item), OnValueSelected, item); } _menu.ShowAsContext();//显示菜单 } EditorGUILayout.EndHorizontal(); #endregion #region EnumMaskField //可以多选 staticFlagMask = (Example)EditorGUILayout.EnumMaskField("EnumMaskField:", staticFlagMask); #endregion #region EnumPopup op = (OPTIONS)EditorGUILayout.EnumPopup("EnumPopup:", op); #endregion #region IntPopup selectedSize = EditorGUILayout.IntPopup("IntPopup: ", selectedSize, names, sizes); #endregion #region Popup index = EditorGUILayout.Popup("Popup:",index, options); #endregion #region EnumMaskPopup m_options = (Options)EditorGUILayout.EnumMaskPopup("EnumMaskPopup:", m_options); #endregion #region HelpBox EditorGUILayout.HelpBox("HelpBox Error:", MessageType.Error); EditorGUILayout.HelpBox("HelpBox Info:", MessageType.Info); EditorGUILayout.HelpBox("HelpBox None:", MessageType.None); EditorGUILayout.HelpBox("HelpBox Warning:", MessageType.Warning); #endregion #region InspectorTitlebar selectedTransform = Selection.activeGameObject.transform; selectedGameObject = Selection.activeGameObject; fold = EditorGUILayout.InspectorTitlebar(fold, selectedTransform); fold2 = EditorGUILayout.InspectorTitlebar(fold2, selectedGameObject); #endregion #region IntSlider //包括最大最小值 m_intSlider = EditorGUILayout.IntSlider("IntSlider:",m_intSlider, 1, 10); #endregion #region MinMaxSlider //取值范围 EditorGUILayout.LabelField("Min Val:", minVal.ToString()); EditorGUILayout.LabelField("Max Val:", maxVal.ToString()); EditorGUILayout.MinMaxSlider("MinMaxSlider",ref minVal, ref maxVal, minLimit, maxLimit); #endregion EditorGUILayout.Space(); #region PasswordField m_passwordField = EditorGUILayout.PasswordField("PasswordField:", m_passwordField); EditorGUILayout.LabelField("输入的文本:", m_passwordField); #endregion #region SelectableLabel //可以选择,复制粘贴 EditorGUILayout.SelectableLabel("SelectableLabel"); #endregion scale = EditorGUILayout.Slider("Slider:",scale, 1, 100); //自适应高,不能自适应宽 m_textArea = EditorGUILayout.TextArea(m_textArea); m_vector2 = EditorGUILayout.Vector2Field("Vector2:", m_vector2); m_vector3 = EditorGUILayout.Vector3Field("Vector3:", m_vector3); m_vector4 = EditorGUILayout.Vector4Field("Vector4:", m_vector4); } string m_textArea = ""; Vector2 m_vector2; Vector3 m_vector3; Vector4 m_vector4; #region DropdownButton void OnValueSelected(object value) { m_itemString = value.ToString(); } #endregion }

到这里,5.6版本的EditorGUILayout类所有方法都试了一遍了。

效果图:


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3