| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> Unity 编辑器功能 -> 正文阅读 |
|
[游戏开发]Unity 编辑器功能 |
Unity内置了两个类:Editor和EditorWindow。其中Editor主要负责某个GameObject在Scene视图下的UI显示,EditorWindow主要生成一个Window作为插件功能使用。 Editor使用Editor功能需要一个脚本如TestTool.cs继承MonoBehavior,然后使用TestEditor继承Editor来实现其功能。 需要在TestEditor上添加关键字CustomEditor来表明是对应于哪个脚本,当TestTool.cs挂载的GameObject被选中时TestEditor就会执行。?TestEditor需要放在名为Editor的目录下,路径无关。 TestEditor可以重新实现OnSceneGUI和OnInspectorGUI来绘制自己的GUI。 1 OnSceneGUI在OnSceneGUI函数是当GameObject被选中每帧执行的。当Scene窗口的Gizmos关闭不执行。 可以获取Event事件,不过这个事件需要在当前挂载TestTool.cs的GameObject被选中时才能接收到。
在OnSceneGUI函数中可以重新绘制GUI,使用Handle获取相关信息,绘制SceneGUI可以使用GUILayout接口:
2?OnInspectorGUI可以使用GUILayout和EditorGUILayout来重新绘制在Inspector面板上的GUI,当这个函数被重写时,之前的公有变量等都不会在Inspector面板上显示了。
?3 执行关键字?如果不在OnSceneGUI调用TestTool.cs中的函数,那么TestTool只能在运行的时候执行,但是可以添加ExecuteInEditMode 的Attribute让其在预览时执行Awake/Update/Start等内置函数。
?添加ExecuteAlways的Attribute可以在运行的时候也执行内置函数。 运行自己的函数可以添加代理实现:
EditorWindow首先需要建立一个Window,先继承EditorWindow,再实现一个static函数创建Window:
创建Window时可以设置OnGUI在SceneChange时刷新:
?MenuItem是菜单路径,可自定义。 然后可以实现OnGUI方法,这样可以绘制我们想要的UI组件,OnGUI的绘制不一定是Update的速度,可能快可能慢,而且只有在Window为焦点时才比较快执行:
?创建Window时 ?当自定义的Window打开后会一直执行Update函数,可以在调用Repaint,这样就可以加快调用OnGUI了,性能比较差:
可以使用SceneView添加代理函数来获取键盘等事件,不过必须在Scene视图为焦点时才会调用:
如果Event在OnScene下获取则只有在Window为焦点时才会捕获到该事件。目前没有查到全局事件怎么捕获,即不在Scene视图下也能捕获到Event的方法。 上面获取的会把鼠标左键事件吃掉,换成beforeSceneGUI
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/28 12:15:08- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |