(转)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); // 单选
    }
}

    

时间: 2024-11-03 03:27:30

(转)Unity笔记之编辑器(CurveField、DoubleField、EnumMaskField、EnumPopup) ... ...的相关文章

(转)Unity笔记之编辑器(UnityEditor)

在使用unity3d的过程中,时常会需要从场景中寻找或者调用一个对象,而Unity就提供了一个贴心的功能——拖拽.用鼠标拖一下中比写堆代码直观的多吧!但是Unity提供的远远不止这一丢丢,下面我们来简单了解下UnityEditor部分的内容. 编辑器最最基本的用法呢就是编辑Inspector. 而Inspector中最最基本的就是把字段显示出来.给几个例子: [code]csharpcode: using UnityEngine; using System.Collections; // 这里没

(转)Unity笔记之编辑器(BeginToggleGroup、BoundsField、ColorField) ...

1. BeginToggleGroup() BeginToggleGroup函数是定义了一个控制范围,可以控制该范围中的GUI是否启用,看下演示代码: [code]csharpcode: using UnityEngine; using System.Collections; using UnityEditor; // 编辑器命名空间的引用 public class Editor2 : EditorWindow // 编辑器类 { bool _toggle; Color _color; stri

(转)Unity笔记之编辑器(BeginFadeGroup、BeginHorizontal、BeginScrollView) ... ...

1. BeginFadeGroup(float value) 这是EditorGUILayout中的一个函数,用来隐藏/显示在它包含的组中的内容.value则是显示内容的量,范围是0-1 . 比较下未使用/使用BeginFadeGroup的窗口: [code]csharpcode: using UnityEngine; using System.Collections; using UnityEditor; // 编辑器命名空间的引用 public class Editor2 : EditorW

[cb]Unity Editor Toolbar 编辑器扩展

1.Apply to Prefab [把改动应用到Prefab] if (GUILayout.Button("Apply Collider To Prefab")) { PrefabUtility.ReplacePrefab(simActor.Preview, PrefabUtility.GetPrefabParent(simActor.Preview), ReplacePrefabOptions.ConnectToPrefab); }     2.Current SceneView

[Unity 笔记] Unity3D中水面的优化思路

(Unity 学习笔记) Unity自带的Water系统,分两种Simple和Pro Water Simple 的反射是依靠反射贴图Cubemap,通过水面的入射和反射和法线等信息,计算得到反射贴图的某一点的color. 而Water Pro的反射 是 依靠 实时生成反射贴图,来得到反射效果. Water Simple的运行损耗小,但是效果差. Water Pro的效果好,但是运行损耗很大. 思考了如何优化水面效果. 1.可以中和两种方式,采用多个预设的cubemap(不同位置得到.可通过cam

Linux学习笔记——Vim编辑器(三)

++++++++++++++++++++++++++++++文件编辑器Vim+++++++++++++++++++++++++++++++ 文件编辑器Vim: 插入命令: 定位命令: 删除命令: 复制和剪切命令: 搜索和搜索替换命令: 保存和退出命令: 导入命令执行结果:r !命令 定义快捷方式 map ^p I#<ESC> 替换命令:ab mymail [email protected] Vim配置文件:/home/username/.vimrc     /root/.vimrc +++++

【Unity笔记】常用插件

记录一些常见插件,随时补充. A星寻路 Dijstra迪杰斯特拉 iTween动画插件 原理:插值法,给出初始值和终点值,自动算出中间值. DoTween Tween动画 Playmaker $45 Playmaker由第三方软件商Hutong Games开发完成.它的Logo是一个中文的"玩"字,独特.有创意. 既是一个可视化脚本工具,又是一个分层逻辑框架.设计师.程序员使用Playmaker能够很快地完成游戏原型制作,既适合独立开发者,又适用于团队协作.Playmaker能够大大提

linux 笔记--vim编辑器,组合条件,文件查找,SUID特殊权限

vim:全屏编辑器,模式化编辑器 vim模式:编辑模式(命令模式)   输入模式   末行模式 模式转换: 编辑--输入:i 在当前光标所在字符的前面转为输入模式.  a 在当前光标所在字符的后面转为输入模式.  o 在当前光标所在行的下方,新建一行并转为输入模式.  I 在当前光标所在行的行首转为输入模式.  A 在当前光标所在行的行尾转为输入模式.  O 在当前光标所在行的上方,新建一行并转为输入模式. 输入--编辑:ESC 编辑--末行:(只能从编辑模式转换到末行模式) :冒号 末行--编

【Unity笔记】Terrain地形制作坍塌/深坑

Unity的Terrain组件在[set the terrain height]分页下,height高度为0时,可理解为该地形的海平面高度,此时就不能地形下榻.把height调到100,点击[flatten],然后就能做地形下榻,深坑的深度最多即可达到100. 学习资料: http://www.maiziedu.com/course/540-7397/