zoukankan      html  css  js  c++  java
  • (转)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); // 单选
        }
    }

        

  • 相关阅读:
    (转)MVC3+EF4.1学习系列(十一)EF4.1常见的问题解决
    (转)iReaper for wp7正式发布
    (转)Asp.net MVC 多语言问题的解决方案
    (转)SQL Server 2005 性能优化实战系列(文章索引)
    (转)结合领域驱动设计的SOA分布式软件架构
    (转)细说jquery ui和jqgrid的ASP.NET实现
    (转)简单代码生成器原理剖析
    (转)[翻译]ASP.NET MVC 3 开发的20个秘诀(十八)[20 Recipes for Programming MVC 3]:自动完成搜索
    sql优化: MySQL Explain详解
    mysql优化: show processlist 详解
  • 原文地址:https://www.cnblogs.com/backlighting/p/5061577.html
Copyright © 2011-2022 走看看