Editor扩展常用API

news2024/11/29 20:35:21


如图

 

效果图

 

代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
 
public class Mybianyi : EditorWindow
{
    string PasswordField = "";
    string m_textArea = "";
    float sliders = 0;
    int slidera = 0;
    string BeginToggleGroup = "BeginToggleGroup";
    bool ToggleGroup = false;
    string Textfield = "";
    bool fg = false;
    float sum = 0;
    int count = 0;
    string tag = "aaa";
    int Layerfield=0;
    string[] pathname = new string[] { "All", "Asset", "..." }; 
    float minVal = 1;
    float maxVal = 2;
    float minLimit = -5;
    float maxLimit = 5;
    static Vector3 center = new Vector3(1, 2, 3);
    static Vector3 size1 = new Vector3(1, 2, 3);
    Bounds _bounds = new Bounds(center, size1);
    Color m_color = Color.white;
    AnimationCurve m_curve = AnimationCurve.Linear(0, 0, 10, 10);
    Vector2 size = new Vector2(100,100);
    int flags = 0;
    string[] options = new string[] { "CanJump", "CanShoot", "CanSwim" ,"Canabc","Canacc"};
    GameObject game ;
    bool showFoldout;
    Vector2 m_vector2 = new Vector2();
    Vector3 m_vector3 = new Vector3();
    Vector4 m_vector4 = new Vector4();
    Transform selectedTransform;
    GameObject selectedGameObject;
    bool fold;
    bool fold2;
    [MenuItem("MyWindow/Window")]
    static void window()
    {
        Mybianyi mybianyi = GetWindow<Mybianyi>();
        mybianyi.Show();
    }
    private void OnGUI()
    {
     
        // GUILayout.Width  控制在窗口中物体所在的宽
        // GUILayout.Height  控制在窗口中物体所在的高
        //它们的返回的类型为GUILayoutOption
        #region GUILayout.Label 提示语句
 
        GUILayout.Label("我的编译器(My compiler)", GUILayout.Width(50), GUILayout.Height(10)); //提示语句
        #endregion
        #region GUILayout.Button( 按钮
        GUILayout.Label("按钮");
        if( GUILayout.Button("按钮", GUILayout.Width(40), GUILayout.Height(40)))
        {
 
        }
        #endregion
        #region GUILayout.TextField 文本
        GUILayout.Label("文本(可以输入)");
        Textfield = GUILayout.TextField(Textfield);//单行
        //参数2 maxLength 最大有效长度
        // Textfield = GUILayout.TextField(Textfield,5);
        #endregion
        #region GUILayout.Space 空行
        //参数为float类型代表空行的距离
        GUILayout.Space(10);
        #endregion
        #region EditorGUILayout.Toggle 开关(跟Toggle一样)
        fg = EditorGUILayout.Toggle("Toggle", fg);//开关
        #endregion
        #region GUILayout.BeginHorizontal 横向
        GUILayout.BeginHorizontal();//可以在里面存放多个如果不规定大小系统会平均分配大小
        GUILayout.Button("按钮");
        Textfield = GUILayout.TextField(Textfield);
        GUILayout.EndHorizontal();//结束语一定要有
        #endregion
        #region GUILayout.BeginVertical 纵向
        GUILayout.BeginVertical();//可以在里面存放多个如果不规定大小系统会平均分配大小
        GUILayout.Button("按钮");
        Textfield = GUILayout.TextField(Textfield);
        GUILayout.EndVertical();//结束语一定要有
        #endregion
        #region  GUILayout.HorizontalSlider(横) GUILayout.VerticalSlider(纵)  Slider(分横纵 上横下纵)
        sum = GUILayout.HorizontalSlider(sum, 0, 10);
        // sum = GUILayout.VerticalSlider(sum, 0, 10);
        GUILayout.Space(20);
        #endregion
        #region EditorGUILayout.Popup  下拉
        count = EditorGUILayout.Popup("下拉:",count,pathname);
        #endregion
        #region GUILayout.BeginScrollView  滑动列表  
        //两个true可以让横纵两条线显示出了
        //两个false可以让横纵两条线不显示出来
        size = GUILayout.BeginScrollView(size,true,true);
        
        GUILayout.EndScrollView();
        #endregion
        #region EditorGUILayout.BoundsField (边界输入)   EditorGUILayout.ColorField(颜色输入)  EditorGUILayout.CurveField(曲线输入)   输入框
        //BoundsField 边界输入框
        _bounds = EditorGUILayout.BoundsField("BoundsField:", _bounds);
        //ColorField 颜色输入框
        m_color = EditorGUILayout.ColorField("ColorField:", m_color);
        //CurveField 曲线输入框
        m_curve = EditorGUILayout.CurveField("CurveField:", m_curve);
        #endregion
        #region EditorGUILayout.TagField    tag(标签)
        tag = EditorGUILayout.TagField("TagField:", tag);
 
        #endregion
        #region   EditorGUILayout.LayerField(可以获取所有的Layer)
        //Layerfield 可以获取所有的Layer
        Layerfield = EditorGUILayout.LayerField("LayerField:", Layerfield);
 
        #endregion
        #region   EditorGUILayout.MaskField (下拉可以多选)
        flags = EditorGUILayout.MaskField("MaskField:", flags, options);
        //Debug.Log(flags);//      系统默认会添加Nothing (对应的值0) 和Everything(-1)
        #endregion
        #region EditorGUILayout.ObjectField(选择物体)
        game = (GameObject) EditorGUILayout.ObjectField(game,typeof(GameObject),true);//typeof(类型) 确定好类型系统会自动帮我找到所有的关于这个类型的物体
        #endregion
        #region  EditorGUILayout.Foldout 折叠
        showFoldout = EditorGUILayout.Foldout(showFoldout, "折叠子物体:");
        if (showFoldout)
        {
            EditorGUI.indentLevel++;//缩进级别
            EditorGUILayout.LabelField("折叠块内容1");
            EditorGUI.indentLevel++;
            EditorGUILayout.LabelField("折叠块内容2");
            EditorGUI.indentLevel--;
            EditorGUI.indentLevel--;
            EditorGUILayout.LabelField("折叠块内容3");
        }
        #endregion
        #region EditorGUILayout.BeginToggleGroup(开关)
        ToggleGroup = EditorGUILayout.BeginToggleGroup(BeginToggleGroup, ToggleGroup);
            Textfield = GUILayout.TextField(Textfield);
        EditorGUILayout.EndToggleGroup();
        #endregion
        #region  GUILayout.FlexibleSpace(布局之间左右对齐)
        EditorGUILayout.BeginHorizontal();//开始最外层横向布局
        GUILayout.FlexibleSpace();//布局之间左右对齐
        GUILayout.Label("-----------------分割线-----------------");
        GUILayout.FlexibleSpace();//布局之间左右对齐
        EditorGUILayout.EndHorizontal();
        #endregion
        #region  EditorGUILayout.HelpBox(提示语句)
        EditorGUILayout.HelpBox("HelpBox Error:", MessageType.Error);//红色错误号
        EditorGUILayout.HelpBox("HelpBox Info:", MessageType.Info);//白色提示号
        EditorGUILayout.HelpBox("HelpBox None:", MessageType.None);//解释号
        EditorGUILayout.HelpBox("HelpBox Warning:", MessageType.Warning);//黄色警告号
        #endregion
        #region EditorGUILayout.Slider(Slider)
        sliders = EditorGUILayout.Slider("Slider:",sliders,0,10);
        #endregion
        #region  EditorGUILayout.TextArea(text 自适应高)
        m_textArea = EditorGUILayout.TextArea(m_textArea);//可以多行
        #endregion
        #region GUILayout.PasswordField(可以改变成对应的符号)
        EditorGUILayout.BeginHorizontal();
        GUILayout.Label("密码text", GUILayout.Width(60));
        PasswordField = GUILayout.PasswordField(PasswordField, '*');//可以改变成对应的符号
        EditorGUILayout.EndHorizontal();
        #endregion
        #region  EditorGUILayout.Vector2Field  EditorGUILayout.Vector3Field  EditorGUILayout.Vector4Field  
        m_vector2 = EditorGUILayout.Vector2Field("Vector2:", m_vector2);
        m_vector3 = EditorGUILayout.Vector3Field("Vector3:", m_vector3);
        m_vector4 = EditorGUILayout.Vector4Field("Vector4:", m_vector4);
        #endregion
        #region EditorGUILayout.SelectableLabel (可以复制粘贴)
        EditorGUILayout.SelectableLabel("SelectableLabel");
        #endregion
        #region  EditorGUILayout.MinMaxSlider (取值范围)
        EditorGUILayout.LabelField("Min Val:", minVal.ToString());
        EditorGUILayout.LabelField("Max Val:", maxVal.ToString());
        EditorGUILayout.MinMaxSlider("MinMaxSlider", ref minVal, ref maxVal, minLimit, maxLimit);
                                                     //现在最小  现在最大 最小长度 最大长度      
        #endregion
        #region   EditorGUILayout.IntSlider(只能是整数)
        slidera = EditorGUILayout.IntSlider("IntSlider:", slidera, 1, 10);
        #endregion
        #region  EditorGUILayout.InspectorTitlebar(将物体返回回来)
        //Transform selectedTransform = Selection.activeGameObject.transform;
        //GameObject selectedGameObject = Selection.activeGameObject;//选择物体(GameObject)
        //fold = EditorGUILayout.InspectorTitlebar(fold, selectedTransform);
        //fold2 = EditorGUILayout.InspectorTitlebar(fold2, selectedGameObject);
        #endregion
    }
}


原文链接:https://blog.csdn.net/qq_57896821/article/details/121264618

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/49065.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣hot100——第1天:1两数之和、2两数相加、3无重复字符的最长子串

文章目录1.1两数之和【代码随想录已刷】2.2两数相加2.1.题目2.2.解答3.3无重复字符的最长子串3.1.题目3.2.解答1.1两数之和【代码随想录已刷】 参考&#xff1a;力扣题目链接&#xff1b;自己的博客题解 2.2两数相加 参考&#xff1a;力扣题目链接&#xff1b;参考题解 2.1…

【附源码】计算机毕业设计JAVA众筹平台网站

【附源码】计算机毕业设计JAVA众筹平台网站 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybati…

什么是 游戏引擎 ?各个主流引擎的区别

在之前的元宇宙中有提及到游戏主播这个行业&#xff0c;那对应的就会有游戏开发者&#xff0c;对于开发最快捷的方式当然是使用游戏引擎进行开发了呀&#xff0c;那接下来我们就来说说这方面的内容吧 &#xff01; 本篇文章主要讲解&#xff0c;游戏开发中常用的5个游戏引擎及其…

C++——二叉搜索树

目录 二叉搜索树 二叉搜索树实现 非递归插入|非递归查找 删除 推导阶段 非递归删除代码 递归查找 递归插入 递归删除 析构函数 拷贝构造 赋值重载 完整代码 二叉搜索树的应用 Key/Value模型 二叉搜索树 二叉搜索树又称二叉排序树&#xff0c;它或者是一…

第3部分 静态路由

目录 3.1 静态路由与默认路由 3.1.1 静态路由介绍 3.1.2 默认路由介绍 3.2 静态路由命令汇总 转发数据包是路由器的最主要功能。路由器转发数据包时需要查找路由表&#xff0c;管理员可以通过手工的方法在路由器中直接配置路由表&#xff0c;这就是静态路由。虽然静态路由不…

Dialog的IDE搭建systermView的方法步骤(DA1469X)

1.背景 SystemView 是一个可以在线调试嵌入式系统的工具&#xff0c;它可以分析有哪些中断、任务执行了&#xff0c;以及这些中断、任务执行的先后关系。还可以查看一些内核对象持有和释放的时间点&#xff0c;比如信号量、互斥量、事件、消息队列等。这在开发和处理具有多个线…

大规模 MIMO 检测的近似消息传递 (AMP)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …

神经架构搜索的综合调查:挑战和解决方案(一)

神经架构搜索的综合调查&#xff1a;挑战和解决方案 paper题目&#xff1a;A Comprehensive Survey of Neural Architecture Search: Challenges and Solutions paper是西北大学发表在ACM Computing Surveys 2021的工作 paper地址&#xff1a;链接 ABSTRACT 深度学习以其强大的…

c#机器学习之opencv(2)-Mat基础

目录Mat基础Mat本质copyTo与cloneMat基础 opencv将图像数据存在一个二维矩阵里。 下面代码复制了一个图像矩阵。 Mat srcPic new Mat("test1.png", ImreadModes.Color); Mat aPic new Mat(srcPic,new OpenCvSharp.Rect(100,120, srcPic.Width-100, srcPic.Heigh…

1.8 打好shell基础

一、常用shell命令 1、管道命令 &#xff08;1&#xff09;命令格式 &#xff08;2&#xff09;案例演示 任务1、查看/etc目录信息前5行信息 执行命令&#xff1a;ll /etc | head -5 任务2、查看/etc/profile文件后5行信息 执行命令&#xff1a;cat /etc/profile | tai…

大数据培训FileInputFormat实现类

FileInputFormat实现类 思考:在运行MapReduce程序时&#xff0c;输入的文件格式包括:基于行的日志文件、 二进制格式文件、数据库表等。那么&#xff0c;针对不同的数据类型&#xff0c;MapReduce是如 何读取这些劣如据的呢? FileInputFormat常见的接口实现类包括:TextInputF…

mapreduce搭建

一.虚拟机安装CentOS7并配置共享文件夹 二.CentOS 7 上hadoop伪分布式搭建全流程完整教程 三.本机使用python操作hdfs搭建及常见问题 四.mapreduce搭建 五.mapper-reducer编程搭建 mapreduce搭建一、配置1.创建mapred-site.xml文件2.编辑mapred-site.xml二、打开hadoop0.删除da…

virtio-net 实现机制【一】(图文并茂)

1. 基于virtio的半虚拟化概述 1.1 virtio运行结构 ① virtio表示虚拟化IO&#xff0c;用于实现设备半虚拟化&#xff0c;即虚拟机中运行的操作系统需要加载特殊的驱动&#xff08;e.g. virtio-net&#xff09;且虚拟机知道自己是虚拟机 相较于基于完全模拟的全虚拟化&#xf…

PR-视频加介绍背景

每天一个PS/PR小技巧&#xff08;原理实践&#xff09; 比如我们有一个展示视频&#xff0c;我们希望在视频一开始时添加一个介绍背景&#xff08;纯色背景&#xff09;&#xff1a; 点击新建->颜色遮罩&#xff1a; 定义名称&#xff0c;选择颜色&#xff0c;然后就能在工…

Bug: conda环境与jupyter notebook kernel核环境不一致

问题 一般在服务器上进行环境安装的时候有多种方式&#xff0c;比如docker, conda等。conda肯使用起来更加简便&#xff0c;docker更适合服务器部署的时候使用。 本文记录在使用conda时候出现的问题&#xff0c;jupter notebook中的环境不一致导致的。 首先conda创建环境 co…

蓝桥杯嵌入式第二篇配置按键

文章目录前言一、原理图查看二、cubeMX配置三、代码讲解(使用按键控制LED灯的开关)四、HAL_Delay的内部实现五.遗留的问题总结前言 点完灯后接下来我们就开始按键的学习了&#xff0c;这也是很简单的&#xff0c;大家不用担心。 一、原理图查看 可以看到板子上面是有4个按键…

定时任务多线程-springboot

定时任务 在项目开发过程中&#xff0c;经常需要定时任务来帮助我们实现某些业务功能&#xff0c;比如定时生成数据报表、生成对账单、订单超时处理等。Spring Boot提供了内置的Scheduled注解实现定时任务的功能。 步骤 1.修改启动类 在启动类上加上EnableScheduling开启定时…

华为数字化转型之道 方法篇 第五章 视IT为投资,用产品思维管理IT

第五章 视IT为投资,用产品思维管理IT 5.1 数字时代IT系统的重新定位 比较传统信息化和数字化转型下的IT系统特征,我们发现业务环境、IT能力、业务和IT的关系都发生了巨大的变化(见图5-1) 从“管理系统”到“作业平台” 传统信息化下的IT系统往往侧重于信息记录、流程固化…

LeetCode994. 腐烂的橘子(C++中等题)

题目 在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b; 值 1 代表新鲜橘子&#xff1b; 值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格…

因子模型:协方差矩阵

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 因子协方差矩阵&#xff08;factor covariance matrix&#xff09;在计算风险的时候很重要。如果一个模型有个因子&#xff0c;那么协方差矩阵的大小就是。对角线元素是每个因子的方差&#xff0c;非…