博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity EditorWindow 笔记
阅读量:5319 次
发布时间:2019-06-14

本文共 3063 字,大约阅读时间需要 10 分钟。

 

一:功能

1.实例化

//设置插件在菜单栏的位置   和快捷键      [MenuItem("YCC's Tools/模型更改/更改父物体和测量长度 %W")]    //实例化窗体      static void Init()    {        myTools window = (myTools)EditorWindow.GetWindow(typeof(myTools));        window.titleContent.text = "更改父物体/测长";        window.Show();    }

 

 

2.选项卡制作

//用GUI画出窗体的空间布局      void OnGUI()    {        toolbarOption = GUILayout.Toolbar(toolbarOption, toolbarTexts);        switch (toolbarOption)        {            case 0:                fnChangeParent();                break;            case 1:                fnLength();                break;        }    }

 

 

3.多个物体更改模型父物体

 

void fnChangeParent()    {        GUILayout.BeginHorizontal("box");        GUILayout.Label("父物体:", EditorStyles.boldLabel);        ObjParent = EditorGUILayout.ObjectField(ObjParent, typeof(Transform)) as Transform;        GUILayout.EndHorizontal();        GUILayout.BeginHorizontal("box");        iChildCount = Selection.transforms.Length;//获取当前鼠标选中的物体个数        if (Selection.transforms.Length > 0)        {            GUILayout.Label("当前选中子物体个数:"+iChildCount, EditorStyles.boldLabel);            if (GUILayout.Button("应用"))            {                if (ObjParent != null)                {                    for (int i = 0; i < iChildCount; i++)                    {                        if (Selection.transforms[i].parent != ObjParent)                            Selection.transforms[i].parent = ObjParent;                    }                    EditorUtility.DisplayDialog("提示", "已更换父物体", "确定");//显示对话框 DisplayDialog (title : string, message : string, ok : string, cancel : string = "") : bool                }                else                    this.ShowNotification(new GUIContent("当前没有父物体!"));//显示通知            }        }        else            GUILayout.Label("当前没有选中子物体" , EditorStyles.boldLabel);        GUILayout.EndHorizontal();    }

 

 

 

4.测量两个物体在场景中的距离

void fnLength()    {        GUILayout.BeginHorizontal("box");        GUILayout.Label("测量基准物体1:", EditorStyles.boldLabel);        T1 = EditorGUILayout.ObjectField(T1, typeof(Transform)) as Transform;        GUILayout.EndHorizontal();        GUILayout.BeginHorizontal("box");        GUILayout.Label("测量参考物体2:", EditorStyles.boldLabel);        T2 = EditorGUILayout.ObjectField(T2, typeof(Transform)) as Transform;        GUILayout.EndHorizontal();        GUILayout.BeginHorizontal();        if (T1 != null && T2 != null)        {            Debug.DrawLine(T1.position, T2.position, Color.red);            //if (GUILayout.Button("查    寻"))            //{              fDistance = Vector3.Distance(T1.position, T2.position);            //}            GUILayout.Label("距离:", EditorStyles.boldLabel);            EditorGUILayout.FloatField(fDistance, EditorStyles.boldLabel);        }        GUILayout.EndHorizontal();    }

 

 

二:注意

1.重绘

//在OnInspectorUpdate上调用重绘,因为它在窗口上较少重绘,就好象是OnGUI/Update    void OnInspectorUpdate()    {        Repaint();//重绘    }

 

2.错误

 出现错误: Invalid editor window UnityEditor.FallbackEditorWindow   解决方法:Layout-> Revert Factory Settings

 

转载于:https://www.cnblogs.com/YDoubleC/p/6201736.html

你可能感兴趣的文章
JVM调优
查看>>
防止ViewPager和Fragment结合使用时候的数据预加载
查看>>
c# Webservice技术整理
查看>>
js正则表达式匹配斜杠 网址 url等
查看>>
day-02(css,js)
查看>>
Centos6 安装chrome
查看>>
使用EXtjs6.2构建web项目
查看>>
Window Live Writer在Win7下安装提示错误“OnCatalogResult:0x80190194”
查看>>
2018.12.7边界圆角redius,背景图设置,平铺,精灵图,盒子伪类索引
查看>>
hdwiki 数据库结构说明
查看>>
求链表的中间节点
查看>>
北京市工资交税情况
查看>>
事务范围数据库读写分离失败
查看>>
webstorm html碎片整理功能
查看>>
腾讯云Badjs镜像使用入门
查看>>
sqoop-1.4.6安装配置
查看>>
二叉树的构建和层级打印
查看>>
C++基础回顾-字符串地址比较
查看>>
阿里插件检查 lombok报错---方法缺少 '@Override' 注解
查看>>
使用vlfeat工具箱中的vl_kmeans函数
查看>>