Unity 编辑器扩展精髓 之 窗口创建与绘制基础组件

news2025/1/12 8:04:20

        本专栏基础资源来自唐老狮和siki学院,仅作学习交流使用,不作任何商业用途,吃水不忘打井人,谨遵教诲

本文只需要知道三个重点即可

EditorWindow类负责操作窗口

OnGUI方法是进入GUI窗口绘制的关键函数

GUILayout类负责绘制具体内容

 EditorWindow          

         官方文档:EditorWindow - Unity 脚本 API 

        继承了 EditorWindow类的编辑器脚本, 你可以在这个窗口中添加自定义方法,如下图演示将创建一个名为Name,有一个任意内容label的窗口

public class Window : EditorWindow
{
    [MenuItem("MyWindow/window1")]
    private static void MyWindow()
        {
        Window w =EditorWindow.GetWindow<Window>("Name");
        w.Show();

    }
    private void OnGUI() {
        GUILayout.Label("任意内容");
    }
}

EditorGUILayout

        但是在具体绘制这一点,unity提供了一个新的类叫做EditorGUILayout,功能与GUILayout相似加入了自动布局功能

EditorGUILayout - Unity 脚本 API

        举例:每种元素都用常用api

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEditor;
using UnityEngine;

public class Window : EditorWindow
{
    [MenuItem("MyWindow/window1")]
    private static void MyWindow()
        {
        Window w =EditorWindow.GetWindow<Window>("Name");
        w.Show();

    }
    //层级和标签
    int layer;
    string tag;

    //选择枚举
    enum E_AnyType{ 
        a=1,
        b=2,
        c=4,
        d=8,
        //要将枚举中的变量定义为2的幂次方,原因是多选枚举时,是按照 或运算 将得出的结果记录下来
        //比如a=1,二进制为0001,b=2,二进制为0010,或运算后结果为0011 = 3 
        //如果不按此规则,a=1,b=2,c=3,当a|b之后,得到的结果就变成了c,而不是多选a和b
    }
    E_AnyType single;
    E_AnyType multiple;

    //字符串选择对应数组值
    int returnNum;
    string[] options = { "op1", "op2", "op3", "op4" };
    int[] result = { 1,2,3,4};

    //关联资源
    GameObject obj;
    int value;//整形输入框
    
    //折叠控件
    bool isHide;
    bool isGroupHide;

    //滑动条
    float slider;
    int intSlider;
    float min;
    float max;
    private void OnGUI() {
        EditorGUILayout.LabelField("页签");
        layer =EditorGUILayout.LayerField(layer);//return int
        tag =EditorGUILayout.TagField("标签");//return sting

        single = (E_AnyType)EditorGUILayout.EnumPopup("单选枚举",single);//return typeof(E_AnyType)
        multiple = (E_AnyType)EditorGUILayout.EnumFlagsField("多选枚举",multiple);

        returnNum = EditorGUILayout.IntPopup("字符串对应数组", returnNum, options, result);
        EditorGUILayout.LabelField(returnNum.ToString());

        EditorGUILayout.DropdownButton(new GUIContent("按钮"), FocusType.Passive);//return bool

        isHide = EditorGUILayout.Foldout(isHide,"折叠控件 bool包裹内容");
        if(isHide){
          
            obj = EditorGUILayout.ObjectField("关联资源对象框", obj, typeof(GameObject), true) as GameObject;
            value = EditorGUILayout.IntField("输入框", value);
        }
        isGroupHide = EditorGUILayout.BeginFoldoutHeaderGroup(isGroupHide,"折叠组控件 必须包括开始和结束");

        EditorGUILayout.EndFoldoutHeaderGroup();

        //开关和开关组类似于折叠控件 关键词:Toggle

        slider =EditorGUILayout.Slider("滑动条",slider,0,1);
        intSlider = EditorGUILayout.IntSlider("整型滑动条",intSlider,0,1);
        //双块滑动条
        EditorGUILayout.MinMaxSlider("双块",ref min,ref max,0,1);

        EditorGUILayout.Space(10);//间隔框
        //提示框
        EditorGUILayout.HelpBox("提示框",MessageType.Warning);//MessageType选择类型

       
    }
}

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

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

相关文章

前端页面样式没效果?没应用上?

当我们在开发项目时会有很多个页面、相同的标签&#xff0c;也有可能有相同的class值。样式设置的多了&#xff0c;分不清哪个是当前应用的。我们可以使用网页的开发者工具。 在我们开发的网页中按下f12或&#xff1a; 在打开的工具中我们可以使用元素选择器&#xff0c;单击我…

项目管理软件:5款甘特图工具测评

在项目管理中&#xff0c;甘特图作为一种直观且高效的任务进度展示工具&#xff0c;被广泛应用于各个行业。以下是几款功能强大、易于使用的甘特图工具&#xff0c;它们能够帮助项目经理更好地规划、跟踪和管理项目进度。 1、进度猫 进度猫是国内项目管理新秀&#xff0c;是…

#渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶路由交换

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

你真的会使用万用表吗?

​更多电路设计&#xff0c;PCB设计分享及分析&#xff0c;可关注本人微信公众号“核桃设计分享”&#xff01; 前几天公司一个刚毕业出来的小伙伴在实验室用万用表测负载电流的时候&#xff0c;直接打火花&#xff0c;把他吓得不轻 我一看&#xff0c;好家伙&#xff0c;万用…

基于SSM的心理咨询管理管理系统(含源码+sql+视频导入教程+文档+PPT)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的心理咨询管理管理系统拥有三个角色&#xff1a;学生用户、咨询师、管理员 管理员&#xff1a;学生管理、咨询师管理、文档信息管理、预约信息管理、测试题目管理、测试信息管理…

SpringBoot框架下的扶贫信息管理系统

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理精准扶贫管理系统的相关信息成为必然。开发…

如何用猿大师办公助手实现OA系统中Word公文/合同在线编辑及流转?

在OA系统或者合同管理系统中&#xff0c;我们会经常遇到网页在线编辑Word文档形式的公文及合同的情况&#xff0c;并且需要上级对下级的公文进行批注等操作&#xff0c;或者不同部门的人需要签字审核&#xff0c;这就需要用到文档流转功能&#xff0c;如何用猿大师办公助手实现…

2024年全国山洪径流模拟与洪水危险性评价技术及典型地区洪水淹没及损失分析——建议收藏!

原文链接&#xff1a;2024年全国山洪径流模拟与洪水危险性评价技术及典型地区洪水淹没及损失分析——建议收藏&#xff01;https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247624758&idx2&sn9f51a07adadc7a7af5ddfe79dd5dd22e&chksmfa8da9d1cdfa20c7305…

获取上传至DMS服务器上文件的URL

文件上传 DATA: lv_class TYPE toadv-doc_type,lv_objectid TYPE sapb-sapobjid.CALL FUNCTION ZARCHIV_CREATE_DIALOG_METAEXPORTINGarchiv_id Z1 "内容存储库IDar_object ZALLFILES "文档类型 * …

单链表OJ题(1):移除链表元素

目录 解法一&#xff1a;带头节点的新链表 解法二&#xff1a;不带头节点的新指向关系链表 总结 这是一道简单的力扣题目&#xff0c;关于解法的话&#xff0c;这里提供了二种思路&#xff0c;重点解释前两种&#xff0c;还有一种思路好想&#xff0c;但是时间复杂度为O(n^2…

qt QGridLayout详解

QGridLayout 是 Qt 框架中的一个布局管理器&#xff0c;用于在网格中排列控件。它允许开发者以行和列的形式组织控件&#xff0c;灵活地管理控件的大小和位置。 重要方法 QGridLayout(QWidget *parent nullptr)&#xff1a;创建一个 QGridLayout对象&#xff0c;并指定其父窗…

R语言笔记(四):函数

文章目录 一、Function basics1、Creating your own function2、Function structure3、Using your created function4、Multiple inputs5、Default inputs 二、Return values and side effects1、Returning more than one thing2、Side effectsExample of side effect: plot 三…

基于熵权法的TOPSIS模型

基于熵权法的TOPSIS模型 1. 简介 数学建模可以结合 熵权法 和 T O P S I S TOPSIS TOPSIS 法各自的特点&#xff0c;进行评价&#xff0c;这种组合模型的使用在数学建模比赛中使用的非常多。 在 2023 美赛 O 奖中就有使用该方法的&#xff0c;往年国赛国奖中也有 2. 熵权法介…

Chromium HTML5 新的 Input 类型tel对应c++

一、Input 类型: tel <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php">电话号码: <input type"tel" name…

Cesium基础-(Entity)-(point)

** 里边包含Vue、React框架代码 ** 1、point 点 效果&#xff1a; Cesium中点(Point)的详细解读如下&#xff1a; Entity API简介&#xff1a; Cesium提供了Entity API&#xff0c;它是一个高级别的数据驱动的API&#xff0c;用于管理一组相关性的可视化对象。Entity API使…

宠物空气净化器有哪些功能呢?优品宠物空气净化器使用体验分享

前段时间&#xff0c;我朋友家生二胎了&#xff0c;为了家里的宝宝&#xff0c;准备入手一台空气净化器。跑来问我&#xff0c;让我推荐一款能净化空气的空气净化器。让他描述描述需求&#xff0c;才知道&#xff0c;他家除了新添了二胎外&#xff0c;最近还养了一只猫&#xf…

学习私服并配置到项目中

下载地址 一、安装 1.将下载好的压缩包进行解压 2.进人bin目录下cmd&#xff0c;执行 nexus.exe /run nexus3.访问nexus界面 在浏览器中输入&#xff1a;http://localhost:8081 4.登录 Username为admin Password根据提示到安装包中去找 二、本地仓库与私服连接 1.创建…

安信金业:18k和24k黄金的区别

黄金&#xff0c;作为永恒的贵金属&#xff0c;在人们心中拥有着独特的地位。而18K金和24K金&#xff0c;作为两种常见的黄金饰品&#xff0c;却常常让消费者感到困惑。今天&#xff0c;我们就来深入探讨18K金和24K金之间的区别&#xff0c;帮助你更好地理解它们各自的特性和价…

基于Qt的多线程并行和循序运行实验Demo

致谢&#xff08;Acknowledgement&#xff09;&#xff1a; 感谢Youtube博主Qt With Ketan与KDAB精心录制的Qt多线程处理应用教程&#xff0c;感谢Bilibili博主爱编程的大丙对Qt多线程与线程池内容深入浅出的讲解。 一、计算机线程相关概念 线程概念[1]&#xff1a; 在计算机科…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27目录1. Large Language Model-based Augmentation for Imbalanced Node Classification on Text-Attributed Graphs摘要研究背…