(转)Unity笔记之编辑器(CurveField、DoubleField、EnumMaskField、EnumPopup) ... ...
1. CurveField
创建的是一个类型为AnimationCurve的曲线变量,看代码:
[code]csharpcode:
using UnityEngine;
using System.Collections;
using UnityEditor; // 编辑器命名空间的引用 public class Editor2 : EditorWindow // 编辑器类
{
private AnimationCurve _animationCurve = new AnimationCurve(); // 初始化一个曲线 [MenuItem("EditorDemo/CreateWindow")] // 在编辑器中添加一个菜单
static void CreateWindow() // 下面这个函数必须是***静态的***
{
// 在这里面创建窗口
EditorWindow.GetWindow(typeof(Editor2), false, "EditorWindow", true);
} void OnGUI()
{
_animationCurve = EditorGUILayout.CurveField("AnimationCurve", _animationCurve); // 创建一个可编辑曲线区域
}
}

要注意的几点:
(1)在使用CurveField函数时,必须先要初始化AnimationCurve变量,因为函数所返回的值必须要有个地方储存。而且函数要知道这条曲线上有几个关键点(KEY);
(2)AnimationCurve类型不能光从表面意思理解为动画曲线,它其实在定义一个不规则变量的时候有很大的作用,比如:

(3)CurveField中还可以改变曲线颜色和约束,这个大家就自行尝试了。
2. DoubleField
这是一个可以输入Double类型浮点值的输入区域,和FloatField的用法相同,我就不赘述了,直接上代码:
[code]csharpcode:
using UnityEngine;
using System.Collections;
using UnityEditor; // 编辑器命名空间的引用 public class Editor2 : EditorWindow // 编辑器类
{
private double _doubleValue; // 声明一个Double变量 [MenuItem("EditorDemo/CreateWindow")] // 在编辑器中添加一个菜单
static void CreateWindow() // 下面这个函数必须是***静态的***
{
// 在这里面创建窗口
EditorWindow.GetWindow(typeof(Editor2), false, "EditorWindow", true);
} void OnGUI()
{
_doubleValue = EditorGUILayout.DoubleField("DoubleField", _doubleValue); // 创建一个Double浮点型输入区域
}
}

3. EnumMaskField、EnumPopup
EnumMaskField是一个可多选的枚举选择项,相对于EnumPopup,看代码和比较:
[code]csharpcode:
using UnityEngine;
using System.Collections;
using UnityEditor; // 编辑器命名空间的引用 public class Editor2 : EditorWindow // 编辑器类
{
private enum EnumValue0 // 这里我们声明两个枚举类型
{
value0 = 0,
value1 = 1,
value2 = 2
};
private EnumValue0 _enumValue0 = EnumValue0.value0; private enum EnumValue1 // 这里我们声明两个枚举类型
{
value0 = 0,
value1 = 1,
value2 = 2
};
private EnumValue1 _enumValue1 = EnumValue1.value0; [MenuItem("EditorDemo/CreateWindow")] // 在编辑器中添加一个菜单
static void CreateWindow() // 下面这个函数必须是***静态的***
{
// 在这里面创建窗口
EditorWindow.GetWindow(typeof(Editor2), false, "EditorWindow", true);
} void OnGUI()
{
_enumValue0 = (EnumValue0)EditorGUILayout.EnumMaskField("EnumMaskField", _enumValue0); // 多选,单选,不选
_enumValue1 = (EnumValue1)EditorGUILayout.EnumPopup("EnumPopup", _enumValue1); // 单选
}
}

(转)Unity笔记之编辑器(CurveField、DoubleField、EnumMaskField、EnumPopup) ... ...的更多相关文章
- (转)Unity笔记之编辑器(UnityEditor)
在使用unity3d的过程中,时常会需要从场景中寻找或者调用一个对象,而Unity就提供了一个贴心的功能——拖拽.用鼠标拖一下中比写堆代码直观的多吧!但是Unity提供的远远不止这一丢丢,下面我们来简 ...
- (转)Unity笔记之编辑器(BeginToggleGroup、BoundsField、ColorField) ...
1. BeginToggleGroup() BeginToggleGroup函数是定义了一个控制范围,可以控制该范围中的GUI是否启用,看下演示代码: [code]csharpcode: using ...
- (转)Unity笔记之编辑器(BeginFadeGroup、BeginHorizontal、BeginScrollView) ... ...
1. BeginFadeGroup(float value) 这是EditorGUILayout中的一个函数,用来隐藏/显示在它包含的组中的内容.value则是显示内容的量,范围是0-1 . 比较下未 ...
- (转)Unity笔记之编辑器(Foldout、HelpBox、InspectorTitlebar、Slider、MinMaxSlid ...
1. Foldout.HelpBox 折叠菜单,大家都知道,不具体解释了,直接代码.因为折叠菜单中必然是有内容才能看到效果,所以顺带把HelpBox(提示框)也说了. [code]csharpcode ...
- 《Linux就该这么学》培训笔记_ch04_Vim编辑器与Shell命令脚本
<Linux就该这么学>培训笔记_ch04_Vim编辑器与Shell命令脚本 文章最后会post上书本的笔记照片. 文章主要内容: Vim编辑器 Shell脚本 流程控制语句 if语句 f ...
- 使用rider做为unity的代码编辑器
使用Rider做的编写Unity代码的IDE,记录一些与VS不相同的笔记 安装和设置方法: 我使用Rider 2019.1 + Unity3D 2018.3.4,在安装完Rider之后,在Unity中 ...
- 【Unity入门】编辑器常用视图介绍
版权声明:本文为博主原创文章,转载请注明出处. 打开Unity编辑器的主窗口,在窗口的右上角可以看到有个“Layout”按钮.这是用来对Unity编辑器主窗口上面的各个窗口面板进行布局的.通常情况下我 ...
- 用SublimeText当Unity Shader的编辑器
用Visual Studio写shader实在蛋疼,那可能就会有人要问了,为啥不用插件可视化制作shader呢?因为我是新手,新手还是老老实实敲代码,慢慢来- 所以试着在网上找找,有没有类似的插件或者 ...
- 【Unity】自定义编辑器窗口——拓展编辑器功能
最近学习了Unity自定义编辑器窗口,下面简单总结,方便用到时回顾. 新建一个脚本: using UnityEngine; using System.Collections; using UnityE ...
随机推荐
- android 蓝牙SPP协议通信
准备 1.蓝牙串行端口基于SPP协议(Serial Port Profile),能在蓝牙设备之间创建串口进行数据传输 2.SPP的UUID:00001101-0000-1000-8000-00805F ...
- HDU 5296 Annoying problem
Annoying problem Time Limit: 16000/8000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others ...
- 读-《c++设计新思维-泛型编程与设计模式之应用》经典记录(英文书名:《modern c++ design》)
1.以设计为目标的程序库都必须帮助使用者完毕静止的设计.以实现使用者自己的constraints,而不是实现预先定义好的constraints. 2.Anything that can be done ...
- Docker背后的内核知识——cgroups资源限制(转)
时间 2015-04-20 21:10:00 InfoQ 原文 http://www.infoq.com/cn/articles/docker-kernel-knowledge-cgroups-re ...
- jQuery上传插件Uploadify使用介绍
以图纸资料上传为例,介绍Uploadify插件的使用,插件下载地址 http://www.uploadify.com/download/ 上传页面: 选择文件增加未上传界面: 上传成功预览界面: ...
- SSH登陆响应慢的问题
http://xiaobin.net/201112/ssh-login-quite-slow/ 同样的问题,有可能是两种情况: 第一种情况比较常见,也有很多资料提及到,就是在SSH登陆时服务器端会对客 ...
- mysql表属性、索引、约束
1.表属性 创建表的基本语法: create table [if not exists] 表名 (字段列表 [,索引或约束列表])[表选项列表] 其中,字段列表格式如下: 字段名 类型 [属性列表], ...
- ASP.NET MVC 简单的分页思想与实现
首先我们通过VS创建一个空的基于Razor视图引擎的ASP.NET MVC3 Web应用程序,命名为JohnConnor.Web 对创建过程或Razor不太了解的看官,请移步 ASP.NET MVC ...
- C++设计模式之适配器模式(三)
4.适配器模式总结 在对象适配器模式中.适配器与适配者之间是关联关系:在类适配器模式中.适配器与适配者之间是继承关系.不论是对象适配器还是类适配器.适配器模式都将现有接口转化为客户类所期望的接口.实现 ...
- object-c全局变量
跟c++一定,在.m里Obj*obj=NULL,在.h里extern Obj*obj 即可.