赞
踩
我们在操作unity中会经常遇到这样那样的窗口。
Inspector窗口,Console窗口,Hierarchy窗口,等 这些都是unity内置的。
又或者说你看到人家插件的窗口,花花绿绿的,自己也想写一个拿来学习(装逼)
unity已经为开发者做了很多支持。 还是去看api,全英文我怎么看的懂,找翻译,找度娘,不要找借口
废话不多说,上车了。
传送门官方EditorWindow API https://docs.unity3d.com/ScriptReference/EditorWindow.html
具体参数我就暂时不介绍了。 太多 讲不过来,自己慢慢试(狗头保命.png)
BeginArea | 在固定的屏幕区域开始GUI控件的GUI布局块。 |
BeginHorizontal | 开始水平对照组。 |
BeginScrollView | 开始一个自动布局的滚动视图。 |
BeginVertical | 开始一个垂直控制组。 |
Box | 制作一个自动布局框。 |
Button | 做一个单一的按钮。 |
EndArea | 关闭一个以BeginArea开始的GUILayout块。 |
EndHorizontal | 关闭一组开始与开始横向。 |
EndScrollView | 以调用开始滚动视图来结束滚动视图。 |
EndVertical | 结束一组开始与开始垂直。 |
ExpandHeight | 传递给控件以允许或不允许垂直扩展的选项。 |
ExpandWidth | 传递给控件以允许或不允许水平扩展的选项。 |
FlexibleSpace | 插入一个灵活的空间元素。 |
Height | 传递给控件的选项,使其具有绝对高度。 |
HorizontalScrollbar | 制作一个水平滚动条。 |
HorizontalSlider | 一个水平滑块,用户可以拖动来改变最小值和最大值之间的值。 |
Label | 制作一个自动布局标签。 |
MaxHeight | 传递给控件以指定最大高度的选项。 |
MaxWidth | 传递给控件以指定最大宽度的选项。 |
MinHeight | 传递给控件以指定最小高度的选项。 |
MinWidth | 传递给控件以指定最小宽度的选项。 |
PasswordField | 创建一个用户可以输入密码的文本字段。 |
RepeatButton | 做一个重复按钮。只要用户按住不放,按钮就会返回true |
SelectionGrid | 制作一个选择网格。 |
Space | 在当前布局组中插入空格 |
TextArea | 创建一个多行文本字段,用户可以在其中编辑字符串。 |
TextField | 创建一个单行文本字段,用户可以在其中编辑字符串。 |
Toggle | 做一个开关按钮。 |
Toolbar | 制作一个工具栏 |
VerticalScrollbar | 制作一个垂直滚动条 |
Width | 传递给控件的选项,使其具有绝对宽度。 |
Window |
创建文件夹Editor与脚本,位置无所谓,跟 Resources一样。
然后自己去EditorWindow类中看下,F12,知其然知其所以然
上代码,最简单的窗口
- public class EditorWindowTimor : EditorWindow
- {
- [MenuItem("Timor/TimorWindow -- 提莫队长的窗口")] //添加菜单选项
- public static void ShowWindow()
- {
- EditorWindow window = EditorWindow.GetWindow(typeof(EditorWindowTimor));
- window.Show();
- }
- }
效果
继续研究GetWindow参数
所以这几中写法都没有问题,自己去改参数,挨个试试
- EditorWindow window1 = EditorWindow.GetWindow(typeof(TimorWindow));
- EditorWindow window2 = EditorWindow.GetWindow(typeof(TimorWindow), true, "提莫队长的窗口", true);
- EditorWindow window3 = EditorWindow.GetWindow<TimorWindow>();
- EditorWindow window4 = EditorWindow.GetWindow<TimorWindow>(true);
- EditorWindow window5 = EditorWindow.GetWindowWithRect(typeof(TimorWindow), new Rect(Screen.width / 3, Screen.height / 3, 500, 500), true, "提莫队长的窗口");
我们去看官方API
t : 窗口类型,记得继承editorWindow
title :窗口的标题
focus : 是否获得焦点,默认获得焦点
utility:是窗口是否浮动,如果是就不能内嵌到unity其他窗口中去,如果不是就能嵌入其他窗口。(可以省略,默认为内嵌入式)
rect :窗体的出现位置,及窗体大小
- using UnityEngine;
- using UnityEditor;
-
- namespace Timor.Editor
- {
-
- public class TimorFirstWindow : EditorWindow
- {
-
- [MenuItem("Timor/我的第一个窗口")]
- public static void ShowMyWindow()
- {
- TimorFirstWindow window = EditorWindow.GetWindow<TimorFirstWindow>("提莫的窗口");
-
- window.Show();
- window.minSize = new Vector2(200, 300);
- }
-
- #region 窗体事件调用
- private void OnProjectChange()
- {
- Debug.Log("当场景改变时调用");
- }
-
- private void OnHierarchyChange()
- {
- Debug.Log("当选择对象属性改变时调用");
- }
-
- void OnGetFocus()
- {
- Debug.Log("当窗口得到焦点时调用");
- }
-
- private void OnLostFocus()
- {
- Debug.Log("当窗口失去焦点时调用");
- }
-
- private void OnSelectionChange()
- {
- Debug.Log("当改变选择不同对象时调用");
- }
-
- private void OnInspectorUpdate()
- {
- Debug.Log("监视面板调用");
- }
-
- private void OnDestroy()
- {
- Debug.Log("当窗口关闭时调用");
- }
-
- private void OnFocus()
- {
- Debug.Log("当窗口获取键盘焦点时调用");
- }
- #endregion
- }
-
- }
好了,这些都是空白的窗口,下几篇讲添加内容
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。