• 拓展Unity3D编辑器


    /***
     * 
     * 编辑器创建新窗口,并设置窗口布局
     * 
     * 
     * 
     * 
     * 
     */
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEditor;
    
    public class EditorWindowTest : EditorWindow {
    
        [MenuItem("MyMenu/OpenWindow")]
        static void OpenWindow()
        {
            Rect wr = new Rect(0, 0, 500, 500);                          //创建窗口
    
            EditorWindowTest window = (EditorWindowTest)EditorWindow.GetWindowWithRect(typeof(EditorWindowTest), wr, true, "测试创建窗口");
            window.Show();
        }
    
        private string text;                                             //输入文字的内容
        private Texture texture;                                         //选择贴图的对象
    
        public void Awake()
        {
            texture = Resources.Load("timg (3)") as Texture;                    //在资源中读取一张贴图
        }
    
        //绘制窗口时调用
        void OnGUI()
        {
            text = EditorGUILayout.TextField("输入文字:", text);        //输入框控件
    
            if (GUILayout.Button("打开通知", GUILayout.Width(200)))
            { 
                //打开一个通知栏
                this.ShowNotification(new GUIContent("我是菜菜"));
            }
    
            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()
        {
            this.Repaint();
        }
    
        void OnSelectionChange()
        {
            //当窗口处于开启状态,并且在Hierarchy视图中选择某游戏对象时调用
            foreach (Transform t in Selection.transforms)
            {
                //有可能是多选,这里开启一个循环打印选中游戏对象的名称
                Debug.Log("OnSelectionChange" + t.name);
            }
        }
    
        void OnDestroy()
        {
            Debug.Log("当窗口关闭时调用");
        }
    }
    

      

  • 相关阅读:
    Cocos2d-x之绘制线条
    Cocos2d-x之绘制填充不规则多边形
    unittest
    检查代码错误和代码风格问题
    命名
    二进制数据
    python 后台运行
    分页
    编码
    格式化
  • 原文地址:https://www.cnblogs.com/Optimism/p/10120362.html
Copyright © 2020-2023  润新知