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();}

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

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

相关文章

51-40 Align your Latents,基于LDM的高分辨率视频生成

由于数据工程、仿真测试工程&#xff0c;咱们不得不进入AIGC图片视频生成领域。兜兜转转&#xff0c;这一篇与智驾场景特别密切。23年4月&#xff0c;英伟达Nvidia联合几所大学发布了带文本条件融合、时空注意力的Video Latent Diffusion Models。提出一种基于LDM的高分辨率视…

MySQL8.0.36-社区版:通用语法(2)

语法格式规范 sql语句可以以单号或者多行为书写&#xff0c;以分号结尾 可以使用空格或者缩进来增加可读性 mysql的sql语句不区分大小写&#xff0c;但是推荐大写关键字 注释分为单号注释和多行 单号注释&#xff1a;--内容 或者 # 内容 多行注释/* 注释内容 */ sql语句的…

面试算法-175-将有序数组转换为二叉搜索树

题目 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 平衡 二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] 输出&#xff1a;[0,-3,9,-10,null,5] 解释&#xff1a;[0,-10,5,null,-3,null,9] 也将被视…

数据结构 -- 数组

本篇文章主要是对数组的实操&#xff0c;所以对数组的概念不在赘述&#xff0c;了解更多数组相关可参照链接 Java数组的概念及使用-CSDN博客 1、DynamicArray类 package com.hh.algorithm.array;import java.util.Arrays; import java.util.Iterator; import java.util.functi…

记录--病理切片图像处理

简介 数字病理切片&#xff0c;也称为全幻灯片成像&#xff08;Whole Slide Imaging&#xff0c;WSI&#xff09;或数字切片扫描&#xff0c;是将传统的玻片病理切片通过高分辨率扫描仪转换为数字图像的技术。这种技术对病理学领域具有革命性的意义&#xff0c;因为它允许病理…

每日OJ题_BFS解决最短路③_力扣127. 单词接龙

目录 ③力扣127. 单词接龙 解析代码 ③力扣127. 单词接龙 127. 单词接龙 难度 困难 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk&#xff1a; 每一对相邻的单词只差一个字母。…

互联网元搜索引擎SearXNG

最近有个很火的项目叫 FreeAskInternet&#xff0c;其工作原理是&#xff1a; 第一步、用户提出问题第二步、用 SearXNG&#xff08;本地运行&#xff09;在多个搜索引擎上进行搜索第三步、将搜索结果传入 LLM 生成答案 所有进程都在本地运行&#xff0c;适用于需要快速获取信…

Python数据分析与应用 |第4章 使用pandas进行数据预处理 (实训)

表1-1healthcare-dataset-stroke.xlsx 部分中风患者的基础信息和体检数据 编号性别高血压是否结婚工作类型居住类型体重指数吸烟史中风9046男否是私人城市36.6以前吸烟是51676女否是私营企业农村N/A从不吸烟是31112男否是私人农村32.5从不吸烟是60182女否是私人城市34.4抽烟是…

【LAMMPS学习】八、基础知识(3.2)使用chunks计算系统属性

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

蓝桥杯 — —灵能传输

灵能传输 友情链接&#xff1a;灵能传输 题目&#xff1a; 输入样例&#xff1a; 3 3 5 -2 3 4 0 0 0 0 3 1 2 3输出样例&#xff1a; 3 0 3思路&#xff1a; 题目大意&#xff1a;给出一个数组&#xff0c;每次选择数组中的一个数&#xff08;要求不能是第一个数与最后一个…

大数据几种任务调度工具

文章目录 一、DolphinScheduler概述和部署1、DolphinScheduler简介1.1 概述1.2 核心架构 2、DolphinScheduler部署模式2.1 概述2.2 单机模式2.3 伪集群模式2.4 集群模式 3、DolphinScheduler集群模式部署3.1 集群规划与准备3.2 下载与配置部署脚本3.3 初始化数据库3.4 一键部署…

maven引入外部jar包

将jar包放入文件夹lib包中 pom文件 <dependency><groupId>com.jyx</groupId><artifactId>Spring-xxl</artifactId><version>1.0-SNAPSHOT</version><scope>system</scope><systemPath>${project.basedir}/lib/Spr…

电商技术揭秘二十四:无人仓储与自动化技术

相关系列文章 电商技术揭秘一&#xff1a;电商架构设计与核心技术 电商技术揭秘二&#xff1a;电商平台推荐系统的实现与优化 电商技术揭秘三&#xff1a;电商平台的支付与结算系统 电商技术揭秘四&#xff1a;电商平台的物流管理系统 电商技术揭秘五&#xff1a;电商平台…

华媒舍:7种方式,打造出旅游媒体套餐

现如今&#xff0c;伴随着旅游业发展与繁荣&#xff0c;更多旅游业发展从业人员越来越重视产品营销品牌基本建设&#xff0c;希望可以将自己的度假旅游产品和服务营销推广给更多的潜在用户。而建立一个优秀的旅游业发展媒体套餐内容品牌是吸引目标客户的重要步骤。下面我们就详…

Golang | Leetcode Golang题解之第30题串联所有单词的子串

题目&#xff1a; 题解&#xff1a; func findSubstring(s string, words []string) (ans []int) {ls, m, n : len(s), len(words), len(words[0])for i : 0; i < n && im*n < ls; i {differ : map[string]int{}for j : 0; j < m; j {differ[s[ij*n:i(j1)*n]…

把握零碎时间,开启长期副业兼职之旅!在家也能轻松赚钱!

转眼间&#xff0c;2024年已悄然走过三分之一。这一年&#xff0c;外界环境似乎并不那么友好&#xff0c;但对我而言&#xff0c;我的月收入仍然相对稳定。我找到的副业让我每月能赚到3000元以上&#xff0c;这让我深感庆幸。 现实中&#xff0c;只依赖主业工资的日子确实艰辛…

更改ip地址的几种方式有哪些

在数字化时代&#xff0c;IP地址作为网络设备的标识&#xff0c;对于我们在网络世界中的活动至关重要。然而&#xff0c;出于多种原因&#xff0c;如保护隐私、访问特定网站或进行网络测试&#xff0c;我们可能需要更改IP地址。虎观代理将详细介绍IP地址的更改方法与步骤&#…

Java基础(一)--语法入门

文章目录 第一章、语法入门一、Java简介1、JVM2、Java程序执行过程3、JDK4、JRE5、JDK、JRE和JVM三者关系 二、Java常量与变量1、标识符2、关键字3、保留字4、变量5、数据类型6、常量 三、运算符1、算术运算符2、赋值运算符3、关系运算符4、逻辑运算符5、条件运算符6、运算符的…

反爬虫之代理IP封禁-协采云IP池

反爬虫之代理IP封禁-协采云IP池 1、目标网址2、IP封禁4033、协采云IP池 1、目标网址 aHR0cDovL3d3dy5jY2dwLXRpYW5qaW4uZ292LmNuLw 2、IP封禁403 这个网站对IP的要求很高&#xff0c;短时间请求十几次就会遭关进小黑屋。如下图&#xff1a; 明显是网站进行了反爬处理&…

Cannot access ‘androidx.activity.FullyDrawnReporterOwner‘

Android Studio新建项目就报错&#xff1a; Cannot access ‘androidx.activity.FullyDrawnReporterOwner’ which is a supertype of ‘cn.dazhou.osddemo.MainActivity’. Check your module classpath for missing or conflicting dependencies 整个类都报错了。本来原来一直…