Editor GUI 编辑器入门

2020-01-16  本文已影响0人  Uonfan

本文转自Unity Connect博主郡墙

Editor GUI 编辑器入门,常见对GUI界面编写及快速实现对介绍,附示例代码,hand by hand ,just do it.

基础GUI

文本类

示例代码

private void BaseAPI()

        {

            GUILayout.Label(mLableStr);

            EditorGUILayout.SelectableLabel(mLabelField);

            EditorGUILayout.LabelField("LabelField", mLabelField);

            mTextField = EditorGUILayout.TextField("TextField", mTextField);

            mIntField = EditorGUILayout.IntField("IntField", mIntField);

            mFloatField = EditorGUILayout.FloatField("FloatField", mFloatField);

            mTextArea = EditorGUILayout.TextArea(mTextArea, GUILayout.Height(40));

            GUIStyle tempFontStyle = new GUIStyle();

            tempFontStyle.normal.background = null;

            tempFontStyle.normal.textColor = Color.yellow;

            tempFontStyle.fontStyle = FontStyle.BoldAndItalic;

            tempFontStyle.fontSize = 18;

            GUILayout.Label(mCustomStr, tempFontStyle);

        }

效果预览

密码输入样式

示例代码

private void PasswordField()

        {

            using (new EditorGUILayout.HorizontalScope())

            {

                GUILayout.Label("PasswordField_1");

                mPasswordField_1 = GUILayout.PasswordField(mPasswordField_1, '*');

            }

            mPasswordField_2 = EditorGUILayout.PasswordField("PasswordField_2", mPasswordField_2);

        }

效果预览

滑动条

示例代码

private void Slider()

        {

            mSlider = EditorGUILayout.Slider("Slider", mSlider, 0.0f, 49.9f);

            EditorGUILayout.MinMaxSlider(new GUIContent("MinMaxSlider"), ref mMinValue, ref mMaxValue, 0, 100);

        }

效果预览

勾选框

示例代码

private void Toggle()

        {

            mToggle = GUILayout.Toggle(mToggle, "Toggle");

            mToggle = EditorGUILayout.Toggle(new GUIContent("Toggle"), mToggle);

        }

效果预览

Toolbar

示例代码

private void Toolbar()

        {

            mToolbarIndex = GUILayout.Toolbar(mToolbarIndex, mToolbarOptions);

            EditorGUILayout.LabelField("Selected Toobar", mToolbarOptions[mToolbarIndex]);

        }

效果预览

可选条件框的类型

示例代码

private void Popup()

        {

            mEnumPopup = (HaloEnum)EditorGUILayout.EnumPopup("EnumPopup", mEnumPopup);

            mEnumMaskField = (HaloEnum)EditorGUILayout.EnumMaskField("EnumMaskField", mEnumMaskField);

            mPopupIndex = EditorGUILayout.Popup("Popup", mPopupIndex, mPopupOptions);

            using (new EditorGUILayout.HorizontalScope())

            {

                mIntPopupIndex = EditorGUILayout.IntPopup("IntPopup", mIntPopupIndex, mIntPopupOptions, mIntPopupSizes);

                EditorGUILayout.LabelField("Selected IntPopup", mIntPopupIndex.ToString());

            }

            mTagField = EditorGUILayout.TagField("TagField", mTagField);

            mLayerField = EditorGUILayout.LayerField("LayerField", mLayerField);

            mMaskFieldIndex = EditorGUILayout.MaskField("MaskField", mMaskFieldIndex, mMaskFieldOptions);

            mColorField = EditorGUILayout.ColorField("ColorField", mColorField);

        }

效果预览

Unity常见基础数据类型

示例代码

private void UnityProperty()

        {

            Color tempOrgColor = GUI.backgroundColor;

            using (new EditorGUILayout.VerticalScope(GUI.skin.box))

            {

                //修改背景颜色;

                GUI.backgroundColor = Color.gray;

                mVector3Field = EditorGUILayout.Vector3Field("Vector3Field", mVector3Field);

                GUI.backgroundColor = tempOrgColor;

            }

            mObjectField = EditorGUILayout.ObjectField(new GUIContent("ObjectField"), mObjectField, typeof(GameObject), true);

            using (new EditorGUILayout.VerticalScope(GUI.skin.box))

            {

                //修改背景颜色;

                GUI.backgroundColor = Color.green;

                mRectField = EditorGUILayout.RectField("RectField", mRectField);

                GUI.backgroundColor = tempOrgColor;

            }

        }

效果预览

其他常用功能

效果预览

示例代码

private void OtherEdiotorUtility()

        {

            if (GUILayout.Button(new GUIContent("弹出系统提示消息", "调用系统级别的提示信息")))

            {

                ShowNotification(new GUIContent("这是来自 ShowNotification 的弹窗消息"));

            }

            bool tempButtonChange = false;

            if (GUILayout.Button(new GUIContent("显示二级窗口", "窗口内的二级弹窗"))) { mDrawSecWindow = true; tempButtonChange = true; }

            if (GUILayout.Button(new GUIContent("绘制图形", "绘制图形的示例"))) { mDrawGraphWindow = true; tempButtonChange = true; }

            if (tempButtonChange && (mDrawGraphWindow || mDrawSecWindow))

            {

                mSecWindowRect = new Rect((int)position.width >> 2, (int)position.height >> 2, (int)position.width >> 1, (int)position.height >> 1);

            }

            EditorGUILayout.Space();

            using (new EditorGUILayout.VerticalScope(GUI.skin.box))

            {

                GUILayout.Label("EditorUtility相关");

                if (string.IsNullOrEmpty(mOpenFilePanel) == false)

                {

                    EditorGUILayout.LabelField("OpenFilePanel SelectPath", mOpenFilePanel);

                }

                using (new EditorGUILayout.HorizontalScope(GUI.skin.scrollView))

                {

                    if (GUILayout.Button("OpenFilePanel"))

                    {

                        mOpenFilePanel = EditorUtility.OpenFilePanel("OpenFilePanel", "Assets", "*");

                    }

                    if (GUILayout.Button("RevealInFinder"))

                    {

                        EditorUtility.RevealInFinder(mOpenFilePanel);

                    }

                }

                if (GUILayout.Button("DisplayDialog"))

                {

                    bool tempResult = EditorUtility.DisplayDialog("这是一个系统二次确认窗口", "文本内容", "确认", "取消");

                    string tempTip = tempResult ? "你按下了二次确认" : "你取消了二次确认";

                    ShowNotification(new GUIContent(tempTip));

                }

            }

        }

原文链接:https://connect.unity.com/p/editor-gui-bian-ji-qi-ru-men?app=true

戳上方链接下载Unity官方app,发现更多干货,在线技术答疑交友社区,还可下载本文演示代码附件哦~

上一篇下一篇

猜你喜欢

热点阅读