Unity扩展编辑器--类型1:Editor Windows
Extending the Editor
Unity允许你使用自己定制的inspectors和Editor Windows扩展编辑器,并且你可以使用定制的Property Drawers定义属性集在inspector中如何展示,这一块讲述如何使用这些特性。
Editor Windows
你可以在你的app中创建任意数量的定制窗口。它们的表现就像Inspector,Scene或者其它内置的窗口。这是给你的游戏添加一个子系统用户接口的绝佳方式。[比如地图编辑器]
做一个自定义的Editor Window包含以下几个简单步骤:
1.创建脚本,继承EditorWindow类
2.使用代码去触发窗口显示自己
3.为你的工具实现GUI代码
Derive From EditorWindow
为了制作你的Editor Window,你的脚本必须存放在一个叫做"Editor"的文件夹中。在这个脚本中创建一个类,它继承自EditorWindow.然后在内部的OnGUI方法里面编写你的GUI控制。
using UnityEngine;
using UnityEditor;
using System.Collections; public class Example:EditorWindow
{
void onGUI()
{
// The actual window code goes here
}
}
Showing the window
为了在屏幕上显示窗口,制作一个menu item来显示它,这个靠创建一个方法完成,而激活这个方法则是靠MenuItem属性。
Unity的默认行为是循环利用窗口(即:再次选择menu item会显示已经存在的窗口。这是靠使用EditorWindow.GetWindow方法实现),例如:
using UnityEngine;
using UnityEditor;
using System.Collections; class MyWindow : EditorWindow {
[MenuItem ("Window/My Window")] public static void ShowWindow () {
EditorWindow.GetWindow(typeof(MyWindow));
} void OnGUI () {
// The actual window code goes here
}
}
这会创造一个标准的,可停靠的编辑窗口,它会在指令之间保存它的位置,可以使用自定义的布局,等等。想要获得更多的操控,你可以使用GetWindowWithRect.
Implementing Your Window's GUI
窗口中实际的内容靠实现OnGUI方法绘制。你在游戏内部GUI中使用的UnityGUI类(GUI和GUILayout)在这里也可以使用。此外我们提供了一些额外的GUI操作,它们在editor-only类里面:EditorGUI和EditorGUILayout。这些类添加在了普通类已经可用的控件集合里,所以你可以随意的混合搭配使用它们。
下面的C#代码展示了你如何添加GUI元素到自定义的EditorWindow中:
using UnityEditor;
using UnityEngine; public class MyWindow : EditorWindow
{
string myString = "Hello World";
bool groupEnabled;
bool myBool = true;
float myFloat = 1.23f; // Add menu item named "My Window" to the Window menu
[MenuItem("Window/My Window")]
public static void ShowWindow()
{
//Show existing window instance. If one doesn't exist, make one.
EditorWindow.GetWindow(typeof(MyWindow));
} void OnGUI()
{
GUILayout.Label ("Base Settings", EditorStyles.boldLabel);
myString = EditorGUILayout.TextField ("Text Field", myString); groupEnabled = EditorGUILayout.BeginToggleGroup ("Optional Settings", groupEnabled);
myBool = EditorGUILayout.Toggle ("Toggle", myBool);
myFloat = EditorGUILayout.Slider ("Slider", myFloat, -, );
EditorGUILayout.EndToggleGroup ();
}
}
样例代码的执行结果如下图:
还想获得更多信息,可以看看在EditorWindow页面的样例和文档
Unity扩展编辑器--类型1:Editor Windows的更多相关文章
- Unity扩展编辑器--类型3:Custom Editors
Custom Editors 加速游戏制作过程的关键是为哪些频繁使用的组件创建自定义的编辑器,为了举例,我们将会使用下面这个极其简单的脚本进行讲解,它的作用是始终保持一个对象注视某一点. public ...
- Unity 扩展编辑器
扩展Inspector界面 继承自Editor,添加CustomEditorAttribute,传入定制的类型 定制显示的类型要求: 类型中所有的public 字段都会自动暴露给Inspector编辑 ...
- Unity扩展编辑器学习笔记--从路径下找到拥有某个组件类型的预设
public static List<T> GetAssetsWithScript<T>(string path) where T:MonoBehaviour { T tmp; ...
- Unity扩展编辑器一
将Test1脚本挂在摄像机上 如图展示 下面我们需要在代码中动态的编辑它,请在你的Project视图中创建一个Editor文件夹,把MyEditor放进Editor文件夹中 在OnInsp ...
- Unity扩展编辑器四
Inspector视图中的get/set使用 get set使用起来很方便,但编辑时,在Inspector视图中问题就来了,因为get/set的属性即使是public了,但是在Inspector视图 ...
- Unity扩展编辑器三
Scene视图是编辑游戏模型的地方,其实它还可以进行编辑,如下图所示,我给Scene视图做了简单的编辑 Scene视图的扩展是基于对象的,意思是你必须在Hierarchy视图中选择一个对象才行,Hie ...
- Unity扩展编辑器二
Unity支持自行创建窗口,也支持自定义窗口布局,在Project视图中创建一个Editor文件夹,在文件夹中创建一条脚本 自定义窗口需要让脚本继承EditorWindow在设置MenuItem,此时 ...
- Unity扩展编辑器五
扩展系统自带组件Inspector 可以在系统摄像机组建上添加一个按钮,这样就可以单独处理逻辑了
- 【Unity】8.5 扩展编辑器
分类:Unity.C#.VS2015 创建日期:2016-04-27 一.简介 可以通过编辑器窗口 (Editor Windows) 创建自己在 Unity 中的自定义设计工具.来自EditorWin ...
随机推荐
- Mac下Intellij IDea发布Java Web项目详解五 开始测试
测试前准备工作目录 Mac下Intellij IDea发布Web项目详解一 Mac下Intellij IDea发布Java Web项目(适合第一次配置Tomcat的家伙们)详解二 Mac下Intell ...
- lightoj 1005 组合数学
题目链接:http://lightoj.com/volume_showproblem.php?problem=1005 #include <cstdio> #include <cst ...
- 平衡树(AVL)详解
1. 为什么平衡树? 在二叉搜索树(BST,Binary Search Tree)中提到,BST树可能会退化成一个链表(整棵树中只有左子树,或者只有右子树),这将大大影响二叉树的性能. 前苏联科学家G ...
- springmvc框架原理分析
第一步:用户发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求HandlerMapping查找Handler,可以根据xml配置,注解进行查找 第三步:处理器映射器Ha ...
- angularJS 过滤器 表单验证
过滤器1.filter的作用就是接收一个输入,通过某个规则进行处理,然后返回处理后的结果,主要用于数据的格式化.2.内置过滤器(1)Currency(货币)将一个数值格式化为货币格式,默认为$(2)D ...
- today's learning of english 1
1.curriculum 必修课 主修课 2.sought seek的过去式 3.blessed with a wonderful marriage 有个幸福美满的婚姻 4.al ...
- Jupyter Notebook 对LaTeX 的支持
Jupyter的Markdown模式比我原来想想的更加强大:它支持LaTeX! 支持的特性不多,应该能满足一般的需求了.
- 2013ACM暑假集训总结-致将走上大三征途的我
回想起这个暑假,从开始与雄鹰一起的纠结要不要进集训队,与吉吉博博组队参加地大邀请赛,害怕进不了集训队.当时激励我月份开始接触的,记得当时在弄运动会来着,然后就问了雄鹰一些输入输出的东西,怀着满心的期待 ...
- android shape的使用详解以及常用效果(渐变色、分割线、边框、半透明阴影效果等)
shape使用.渐变色.分割线.边框.半透明.半透明阴影效果. 首先简单了解一下shape中常见的属性.(详细介绍参看 api文档 ) 转载请注明:Rflyee_大飞: http://blog.cs ...
- ubuntu vim YouComlpeteMe配置
使用vundle安装时,在.vimrc中添加 Plugin 'Valloric/YouCompleteMe' 使用Bundle会安装失败原因未知 YCM编译时附加选项--system-libclang ...