Unity 扩展自定义编辑器窗口

在Assets文件夹路径下任意位置创建Editor文件夹,将扩展编辑器的代码放在Editor文件夹下


生成编辑器窗口

代码中首先引用命名空间

using UnityEditor;

然后将创建的类继承自EditorWindow

public class MenuEditor : EditorWindow

然后通过扩展编辑器菜单功能调用创建窗口的方法

[MenuItem("MainMenu/ShowWindows")]
static void ShowWindow()
{
    GetWindow<MenuEditor>();
}

要注意方法中泛型参数需要传入的是自己代码的类,这个功能是根据后面OnGUI方法中的具体逻辑生成一个窗口,如果没有OnGUI函数或者OnGUI函数是空,只会打开一个空白窗口。


OnGUI函数编辑窗口内容

全部的编辑窗口的内容全部都需要写在OnGUI事件函数中,生成窗口时会根据OnGUI函数中的具体逻辑来生成窗口中的内容,以下全部内容均需要卸载OnGUI函数中

public void OnGUI(){ }

GUILayoutOption 窗体大小参数

编辑窗口内容的时候大部分都会遇到一个params GUILayoutOption[] options的参数,这个参数中需要传入的GUILayoutOption类型,通常情况为

GUILayout.Width(100), GUILayout.Height(100)

也就是设置窗体的长度与高度,Width为长度,Height为高度 


EditorGUILayout类

BeginFoldoutHeaderGroup创建折叠标签页

public static bool BeginFoldoutHeaderGroup(bool foldout, string content)

第一个参数时默认状态下标签页是否折叠

第二个参数为标签页的名字

返回的参数是标签页的折叠状态

需要特别注意的有两点:

1.需要在标签页中显示的内容需要用if语句判断返回值,然后将标签页中的内容写在if语句中。

2.想要结束标签页时需要调用EditorGUILayout.EndFoldoutHeaderGroup()方法

示例代码:

    bool showGroup;
    public void OnGUI()
    {
        showGroup = EditorGUILayout.BeginFoldoutHeaderGroup(showGroup,"ShowGroup");
        if (showGroup)
        {
            GUILayout.Label("YourShowGroupNow");
        }
        EditorGUILayout.EndFoldoutHeaderGroup();
    }

BeginScrollView创建滚动视图

public static Vector2 BeginScrollView(Vector2 scrollPosition, params GUILayoutOption[] options);

第一个参数传入任意Vector2的值,传入的值必须是函数返回的值

第二个参数为GUILayoutOption类型,根据参数传入设置窗口大小

返回值必须要与参数一传入的变量相同,否则无法实现滚动,代码中不需要使用返回值

需要特别注意的有两点:

1.方法的第一个参数和返回值必须是同一个全局变量,不能是常量,不能是局部变量

2.想要结束滚动视图时需要调用EditorGUILayout.EndScrollView()方法

示例代码:

    Vector2 scrollViewPos;
    public void OnGUI()
    {
        scrollViewPos = EditorGUILayout.BeginScrollView(scrollViewPos, GUILayout.Width(500),GUILayout.Height(100));
        GUILayout.Label("This is a ScrollView !\nThis is a ScrollView !\nThis is a ScrollView !\nThis is a ScrollView !");
        GUILayout.Label("This is a ScrollView !\nThis is a ScrollView !\nThis is a ScrollView !\nThis is a ScrollView !");
        EditorGUILayout.EndScrollView();
    }

BeginToggleGroup创建可勾选激活区域

public static bool BeginToggleGroup(string label, bool toggle);

第一个参数为勾选框中的文字

第二个参数为勾选框的初始勾选状态

返回值为当前勾选框是否被勾选

需要特别注意两点

1.通过勾选框判断是否需要激活的内容需要用if语句判断返回的bool值,然后将可激活内容写在if语句中。

2.想结束区域时需要调用EditorGUILayout.EndFoldoutHeaderGroup()方法

示例代码:

    bool showGroup;
    public void OnGUI()
    {
        showGroup = EditorGUILayout.BeginFoldoutHeaderGroup(showGroup, "ShowGroup");
        if (showGroup)
        {
            GUILayout.Label("YourShowGroupNow");
        }
        EditorGUILayout.EndFoldoutHeaderGroup();
    }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jackson 2.x 系列【24】Spring Web 集成之 Jackson2ObjectMapperBuilder

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Jackson 版本 2.17.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-jaskson-demo 文章目录 1. 前言2. Spring Web3. Jackson2ObjectMapperBuilder3.1 成员属性3.2 静态方法3…

FMEA分析

目录 1、FMEA的核心目的 2、FMEA的种类 3、FMEA的实施步骤 4、FMEA的SOD等级 5、FMEA的例子 FMEA&#xff08;Failure Modes and Effects Analysis&#xff0c;失效模式与影响分析&#xff09;是一种预防性的可靠性设计分析&#xff0c;用来确定潜在失效模式及其原因。它主…

IDEA使用SCALA

一、在IDEA中下载插件 在设置->插件中找到scala&#xff0c;并下载。 下载完成后重启idea 二、在idea中创建spark的RDD操作项目 新建项目选中Scala。 创建完成后为项目添加java包&#xff0c;这个添加的是spark安装包中jars目录下的所有jar包 然后编写RDD操作 import or…

安全中级-初开始

一、网络基础 重要点&#xff1a;TTL值&#xff08;防环&#xff0c;linux64.Windows128 &#xff09;&#xff0c;IP数据包包头格式字节&#xff08;20&#xff09; 标识标志偏移量起到什么作用&#xff08;数据超过1500会分片&#xff09; wireshack抓包会有一个MSS&#x…

铭飞 MCMS 存在SQL注入漏洞

声明&#xff1a; 本文仅用于技术交流&#xff0c;请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 简介 铭飞&#xff08;MCMS&#xff09;是一种计算机管理…

Opencv3.4+FFMpeg3.4+pkg-config交叉编译arm开发板

Ubuntu16.04 64位 FFmpeg3.4 OpenCv3.4 一、下载FFmpeg https://github.com/FFmpeg/FFmpeg 1.配置 ./configure --prefix/home/zeng/ffmpeg_install --enable-cross-compile --cross-prefixarm-linux-gnueabihf- --ccarm-linux-gnueabihf-gcc --target-oslinux --cpuco…

算法课程笔记——排序

Bool返回真假 为何用const不用define 1.保护被修饰的东西 2.通常不分配存储空间&#xff0c; 效率高 匿名函数只在一处用&#xff0c;其他处用不到 不写&就是拷贝 u相等就u&#xff0c;不等就v 一个字符是空格一个是换行&#xff0c;后面是取下标i那就是1&#xff08;true&…

图解数学:拉格朗日松弛方法的直观理解

昨晚写了拉格朗日松弛方法的原理分析&#xff0c;今天意犹未尽&#xff0c;图解一下&#xff0c;从直观上进一步理解这种方法。 一、一个简单例子 我们先来看一个简单的例子&#xff0c;下面数学规划问题没有约束条件&#xff1a; min ⁡ f ( x ) − x 2 8 x − 10 \begin…

全排列问题

日升时奋斗&#xff0c;日落时自省 目录 1、全排列 2、全排列II 3、子集 4、组合 1、全排列 首先要了解全排列是怎么样的 例如:数组[1,2,3]的全排列&#xff08;全排列就是不同顺序排列方式&#xff09; 例子所有的排列方式如&#xff1a;[1,2,3],[1,3,2],[2,1,3],[2,3…

Leetcode876_链表的中间结点

1.leetcode原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 2.题目描述 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5…

PTA 编程题(C语言)-- 判断素数

题目标题&#xff1a; 判断素数 题目作者 陈越 浙江大学 本题的目标很简单&#xff0c;就是判断一个给定的正整数是否素数。 输入格式&#xff1a; 输入在第一行给出一个正整数N&#xff08;≤ 10&#xff09;&#xff0c;随后N行&#xff0c;每行给出一个小于…

康耐视visionpro-CoglntersectLineLineTool操作说明工具详细说明

◆CogIntersectLineLineTool功能说明&#xff1a; 创建两条线的交点 备注&#xff1a;在“Geometry-Intersection”选项中的所有工具都是创建两个图形的交点工具&#xff0c;其中包括圆与圆的交点、线与圆的交点、线与线的交点、线与圆的交点等&#xff0c;工具使用的方法相似。…

C++ - set 和 map详解

目录 0. 引言 1. 关联式容器 2. 键值对 3. 树形结构 4. set 4.1 set 的定义 4.2 set 的构造 4.3 set 的常用函数 4.4 set 的特点 5. multiset 5.1 multiset 插入冗余数据 5.2 multiset - count 的使用 6. map 6.1 map 的定义 6.2 map 的构造 6.3 map的常…

dcoker+nginx解决前端本地开发跨域

步骤 docker 拉取nginx镜像跑容器 并配置数据卷nginx.conf nginx.conf文件配置 这里展示server server {listen 80;listen [::]:80;server_name localhost;#access_log /var/log/nginx/host.access.log main;location / {# 当我们访问127.0.0.1:8028就会跳转到ht…

软件2班20240415

快速引用类选择器 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevi…

二进制离散无记忆对称信道

目录 引言 二进制离散无记忆对称信道 引言 在无线通信中&#xff0c;信源与信宿是分开的&#xff0c;两者间的通信环境的复杂度通常会随着距离 的增加而提升。信道是用来连接信源与信宿的媒介。信源与信宿之间的信息传递则需要 借助于信道&#xff0c;因此信道质量的优劣通常…

移动端web适配方案

以下是移动端适配的多个方案&#xff0c;也可以说说你是怎么做的。 正文 自适应&#xff1a;根据不同的设备屏幕大小来自动调整尺寸、大小 响应式&#xff1a;会随着屏幕的实时变动而自动调整&#xff0c;是一种更强的自适应 为什么要做移动端适配&#xff1f; 目前市面上…

【深度剖析】曾经让人无法理解的事件循环,前端学习路线

先自我介绍一下&#xff0c;小编浙江大学毕业&#xff0c;去过华为、字节跳动等大厂&#xff0c;目前阿里P7 深知大多数程序员&#xff0c;想要提升技能&#xff0c;往往是自己摸索成长&#xff0c;但自己不成体系的自学效果低效又漫长&#xff0c;而且极易碰到天花板技术停滞…

Redis入门到通关之ZSet命令

文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素&#xff0c;并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄…

最优算法100例之49-链表环-计算环的长度

专栏主页:计算机专业基础知识总结(适用于期末复习考研刷题求职面试)系列文章https://blog.csdn.net/seeker1994/category_12585732.html 题目描述 定义两个指针,一个指针走两步,一个指针走一步,第一次相遇时开始计数,第二次相遇时停止计数,最后计数器的值就是环的长度…