Unity 编辑器扩展自定义窗体

这次看见Unity还可以自定义弹出窗体,让我很好奇.于是就去网上找文章看了看. 如果想自定义窗体需要把类放入Editor文件夹下面.

代码如下:

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, "盘子脸");
            }

            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 OnFocus()
            {
                Debug.Log("当窗口获得焦点调用一次");
            }

            void OnLostFocus()
            {
                Debug.Log("当窗口丢失焦点调用一次");
            }

            void OnHierarchyChange()
            {
                Debug.Log("当Hierarchy视图中的任何对象发生改变时调用一次");
            }

            void OnProjectChange()
            {
                Debug.Log("当Project视图中的资源发生改变时调用一次");
            }

            void OnInspectorUpdate()
            {
                this.Repaint();
            }

            void OnSelectionChange()
            {
                foreach (Transform t in Selection.transforms)
                {
                    Debug.Log("OnSelectionChange" + t.name);
                }
            }

            void OnDestroy()
            {
                Debug.Log("当窗口关闭时候调用");
            }
        }

1. 暂时没有找到自定义窗体和组件之间是如何传递值的!

本文固定链接: http://www.xuanyusong.com/archives/2211

转载请注明: 雨松MOMO 2013年04月15日 于 雨松MOMO程序研究院 发表

时间: 2024-10-10 08:31:32

Unity 编辑器扩展自定义窗体的相关文章

Unity编辑器扩展chapter1

Unity编辑器扩展chapter1 unity通过提供EditorScript API 的方式为我们提供了方便强大的编辑器扩展途径.学好这一部分可以使我们学会编写一些工具来提高效率,甚至可以自制一些小的插件应用的项目工程中去,达到复用的目的.今天首先创建一个新场景生成的菜单项,生成的场景已经绑定好需要的游戏对象及脚本. Tips:1.官方API 2.编辑器扩展脚本都需放在Editor文件夹下,Editor的层级和数目没有要求 EditorUtil.cs :编辑器扩展类,向外部提供编辑器扩展方法

Unity编辑器扩展Texture显示选择框

学习NGUI插件的时候,突然间有一个问题为什么它这些属性可以通过弹出窗口来选中呢? 而我自己写的组件只能使用手动拖放的方式=.=. Unity开发了组件Inspector视图扩展API,如果我们要写插件方便别人来使用,使用编辑器扩展API让我们的组件显示的更华丽,使用方便 Texture弹出选择框选中图片赋值: 1个组件对应1个Edit扩展器,继承Editor必须让入Editor文件夹下 MyComponent: using UnityEngine; using System.Collectio

unity编辑器扩展一批量生成图片预制

觉得自己正在慢慢退化,所以以后坚持写博客记录一下成长. 今天分享一个以前用到的一个功能,unity编辑器的一个扩张工具--批量生成图片,有兴趣的朋友可以进行扩展 闲话少说直接上代码: namespace Game.Utility{    public class BatchCreatePrefab : EditorWindow    {        [MenuItem("Tools/生成预制")]        private static void PrefabWrapTool()

Unity 编辑器扩展 场景视图内控制对象

http://blog.csdn.net/akof1314/article/details/38129031 假设有一个敌人生成器类,其中有个属性range用来表示敌人生成的范围区域大小,那么可以用OnDrawGizmos函数来绘制它在场景视图所代表的区域大小,便于开发调试.这个敌人生成器类,类似如下: 12345678910111213141516171819   using UnityEngine;using System.Collections; public class EnemySpa

Unity编辑器扩展相关知识

1.一些类 1.1.GUI 界面 1.2.GUILayout 界面布局 1.3.GUIStyle 界面样式 1.4.GUIContent 界面内容 1.5.Editor 编辑器 1.6.EditorUtility 编辑器工具 1.7.EditorWindow 编辑器窗口 1.8.EditorGUI 编辑器界面 1.9.EditorGUILayout 编辑器界面布局 1.10.EditorGUIUtility 编辑器界面工具 1.11.Handles 控制柄 1.12.HandleUtility

Unity编辑器扩展 – Menu Items

参考:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu-items 通过Unity MenuItem属性类可以扩展主菜单.属性栏内容菜单.层级栏菜单及资源栏菜单. MenuItem可以将任意静态函数转换为菜单命令,只有静态函数能使用MenuItem属性. 添加菜单选项 添加一个简单的主菜单按钮 using UnityEditor; using UnityE

Unity编辑器扩展-Custom List, displaying data your way

本文转自http://catlikecoding.com/unity/tutorials/editor/custom-list/ Custom List, displaying data your way In this Unity C# tutorial you will create a custom visualization for arrays and lists in the editor. You will learn to create a custom editor use S

Unity编辑器扩展

代码放在Assets/Editor中: using UnityEngine; using UnityEditor; public class MyWindow : EditorWindow { const string MenuName = "Atwal Code Snippet"; enum Code_Type { input_code, rigidbody_force_code, camera_follow } static Code_Type type = 0; static s

unity shader 编辑器扩展类 ShaderGUI

这应该unity5才出的新功能了,今天看文档时刚巧看到了,就来尝试了一下. 效果如图: shader 的编辑器扩展分为2种方法: 是通过UnityEditor下的ShaderGUI类来实现的,形式比较近似于我们一般对unity编辑器的扩展方式. 是通过直接在shader代码上通过unity为我们预定义好的一些命令来扩展. 个人比较推荐使用第一种方法,第二种在尝试时发现 ①是第二种控件的种类有限.限制还特别多,变量申请的不对的话,有时也不报错,不利于维护. ②是文档里还有错误+没说清楚的地方. ③