Unity创建自定义窗口
来源:互联网 发布:oracle数据库考试 编辑:程序博客网 时间:2024/06/05 00:08
Unity支持自行创建窗口,也支持自定义窗口布局。在Project视图中创建一个Editor文件夹,在文件夹中在创建一条脚本。
自定义窗口需要让脚本继承EditorWindow在设置MenuItem,此时在Unity导航菜单栏中GameObjec->window就可创建一个自定义窗口。
using UnityEngine;using UnityEditor;public class MyEditor : EditorWindow { [MenuItem ("GameObject/window")] static void AddWindow (){ //创建窗口Rect wr = new Rect (0,0,500,500); MyEditor window = (MyEditor)EditorWindow.GetWindowWithRect (typeof (MyEditor),wr,true,"widow name");window.Show(); }}
EditorWindow.GetWindowWithRect() 和 EditorWindow.GetWindow()都可以创建一个窗口。前者可以规定窗口的区域,后者可通过鼠标动态的延伸窗口。参数1表示窗口的对象,参数2表示窗口的区域,参数3表示窗口类型true表示窗口不会被别的窗口覆盖,参数4表示窗口的名称。
然后我们在扩充一下自定义窗口,仔细看看窗口的生命周期。
using UnityEngine;using UnityEditor;public class MyEditor : EditorWindow { [MenuItem ("GameObject/window")] static void AddWindow (){ //创建窗口Rect wr = new Rect (0,0,500,500); MyEditor window = (MyEditor)EditorWindow.GetWindowWithRect (typeof (MyEditor),wr,true,"widow name");window.Show(); }//输入文字的内容private string text;//选择贴图的对象private Texture texture;public void Awake () {//在资源中读取一张贴图texture = Resources.Load("1") as Texture;}//绘制窗口时调用 void OnGUI () {//输入框控件text = EditorGUILayout.TextField("输入文字:",text);if(GUILayout.Button("打开通知",GUILayout.Width(200))){//打开一个通知栏this.ShowNotification(new GUIContent("This is a Notification"));}if(GUILayout.Button("关闭通知",GUILayout.Width(200))){//关闭通知栏this.RemoveNotification();}//文本框显示鼠标在窗口的位置 EditorGUILayout.LabelField ("鼠标在窗口的位置", Event.current.mousePosition.ToString ());//选择贴图texture = EditorGUILayout.ObjectField("添加贴图",texture,typeof(Texture),true) as Texture;if(GUILayout.Button("关闭窗口",GUILayout.Width(200))){//关闭窗口this.Close();} }//更新void Update(){}void OnFocus(){Debug.Log("当窗口获得焦点时调用一次");}void OnLostFocus(){Debug.Log("当窗口丢失焦点时调用一次");}void OnHierarchyChange(){Debug.Log("当Hierarchy视图中的任何对象发生改变时调用一次");}void OnProjectChange(){Debug.Log("当Project视图中的资源发生改变时调用一次");}void OnInspectorUpdate(){ //Debug.Log("窗口面板的更新"); //这里开启窗口的重绘,不然窗口信息不会刷新 this.Repaint();}void OnSelectionChange(){//当窗口出去开启状态,并且在Hierarchy视图中选择某游戏对象时调用foreach(Transform t in Selection.transforms){//有可能是多选,这里开启一个循环打印选中游戏对象的名称Debug.Log("OnSelectionChange" + t.name);}}void OnDestroy(){Debug.Log("当窗口关闭时调用");}}
下载内容: http://vdisk.weibo.com/s/xHLuJ
阅读全文
0 0
- Unity创建自定义窗口
- Unity创建自定义窗口编辑器
- Unity EditorWindow自定义弹出窗口
- unity mesh的自定义创建
- VC创建自定义不规则窗口
- 拓展编辑器功能--Unity自定义编辑器窗口
- Unity之Editor类创建窗口
- Unity自定义创建脚本模板菜单
- flex4 中创建自定义弹出窗口
- QT创建自定义窗口部件笔记
- Ext创建自定义窗口显示html内容
- 第五章 创建自定义窗口部件
- C#下WPF创建自定义透明窗口
- python3+PyQt5 自定义窗口部件--创建复合窗口部件
- Unity Editor 基础篇(三):自定义窗口
- Unity Editor 基础篇(三):自定义窗口
- 制作Unity插件之-创建一个Window窗口
- 制作Unity插件之-创建一个Window窗口
- 线程多线程总结
- 基于Bootstrap的多图片(文件也可以)上传、预览、删除、缩放、进度...显示
- android developer tiny share-20170629
- [干货]如何从不均衡类中进行机器学习
- springmvc异常处理
- Unity创建自定义窗口
- 来科普啦,对于软件测试,你知道多少?
- Can't install via pip because of egg_info error
- App启动加载广告页面思路
- Oracle中的SQL分页查询原理和方法详解
- 12_opengl学习
- gulp 安装 gulp-css-spriter
- 【python学习笔记】Dataframe和类SQL的merge函数(一)
- UVA11802-All Your Bases Belong to Us