【Unity编辑器扩展】 | 编辑器扩展入门基础

请添加图片描述

      • 前言
  • 【Unity编辑器扩展】 | 编辑器扩展入门基础
    • 一、基本概念
    • 二、核心知识点 简述
    • 三、相关API
  • 总结

在这里插入图片描述

前言

  • 当谈到游戏开发工具,Unity编辑器是一个备受赞誉的平台。它为开发者提供了一个强大且灵活的环境,使他们能够创建令人惊叹的游戏和交互式体验。
  • 然而,Unity编辑器本身也是可以扩展和定制的,这为开发者提供了进一步提升工作流程和增强功能的机会。
  • 在Unity 编辑器扩展专栏中,将探讨Unity编辑器扩展的概念、优势、如何创建自己的扩展以及众多关于编辑器扩展的知识学习。

【Unity编辑器扩展】 | 编辑器扩展入门基础

一、基本概念

Unity编辑器扩展 是一种自定义工具和功能,可以增强和扩展Unity编辑器的默认功能,以满足特定项目或工作流程的需求。通过Unity编辑器扩展,开发者可以创建自定义的编辑器窗口、面板、工具栏按钮、菜单选项等,以提供更直观、高效的工作环境。

下面是一些常见的Unity编辑器扩展的功能和应用:

  1. 自定义窗口和面板:开发者可以创建自己的窗口和面板,用于管理特定资源、设置参数或展示特定工具。例如,可以创建一个自定义资源管理器窗口来管理游戏中的素材资源,或创建一个自定义属性面板来调整游戏对象的属性。
  2. 自定义Inspector:Unity的Inspector窗口显示了当前选中对象的属性和组件。通过编辑器扩展,开发者可以自定义Inspector的显示方式,并添加额外的交互和功能。例如,可以为特定组件添加自定义的Inspector界面,以提供更直观和定制化的编辑体验。
  3. 自定义菜单和工具栏:开发者可以添加自定义的菜单选项和工具栏按钮,以快速访问特定功能或执行特定操作。例如,可以添加一个自定义菜单选项来导入和处理特定类型的资源文件,或添加一个工具栏按钮来执行一组常用的操作。
  4. 自动化任务和工作流程:通过编辑器扩展,开发者可以编写脚本来自动化重复性的任务和工作流程。例如,可以编写一个编辑器扩展脚本来自动创建特定类型的游戏对象,或自动化资源导入和设置过程。
  5. 交互式工具:编辑器扩展还可以提供交互式工具,使开发者能够在场景视图中直接进行编辑和操作。例如,可以创建一个自定义的编辑器工具,用于在场景中绘制路径、调整物体位置或创建特定效果。

只要是Unity引擎编辑器本身未提供的工具或视图,而是开发者使用其他工具或代码做出来的编辑器功能都可以算是对编辑器扩展的一种方式。

总之,Unity编辑器扩展允许开发者根据项目需求自定义Unity编辑器的界面和功能,提供更好的工作环境和工作流程。它为开发者提供了更大的灵活性和控制力,以满足项目的特定需求,并提高开发效率。

更多Unity编辑器扩展文章介绍可以看一下这篇文章:Unity编辑器扩展:提高效率与创造力的关键


二、核心知识点 简述

在Unity编辑器扩展中,用到的API非常丰富。以下是一些常用的API及其功能的详细介绍:

  1. EditorWindow类:用于创建自定义的编辑器窗口。通过继承EditorWindow类,可以实现自定义窗口的UI布局和功能,并响应用户的操作。
  2. EditorGUIEditorGUILayout类:用于创建编辑器界面的控件。这些类提供了一系列方法,用于创建标签、按钮、文本框、滑动条等各种UI元素。
  3. SerializedObject类和SerializedProperty类:用于访问和修改Unity对象的序列化数据。通过SerializedObject类,可以获取目标对象的序列化数据,并通过SerializedProperty类对其中的属性进行访问和修改。
  4. EditorGUIUtility类:提供了一些编辑器工具函数,用于绘制纹理、图标、颜色选择器等。可以使用这些函数增加一些视觉效果和交互功能。
  5. AssetDatabase类:用于管理项目中的资源。可以通过AssetDatabase类进行资源的导入、导出、重命名等操作。
  6. EditorStyles类:提供了一系列预定义的样式,用于设置和修改编辑器界面中的元素样式。可以使用EditorStyles类设置按钮、标签、文本框等元素的样式。
  7. MenuCommand类:用于处理自定义菜单选项和工具栏按钮的点击事件。可以通过MenuCommand类获取当前操作的目标对象,并执行相应的操作。
  8. SceneView类:用于创建和管理场景视图。可以在场景视图中绘制图形、处理鼠标输入等。
  9. Undo类:用于实现撤销和重做功能。可以使用Undo类记录和回放编辑操作。
  10. Callbacks类:提供了一些回调函数,可以在特定事件发生时执行自定义的操作,如OnOpenAsset、OnSceneGUI等。

这些API提供了丰富的功能和接口,用于创建自定义的编辑器界面、添加交互功能、访问和修改对象属性等。开发者可以根据项目需求,合理运用这些API来实现所需的编辑器扩展功能。

这些类也是 Unity 编辑器扩展中最常用的类,它们提供了丰富的功能和接口,用于创建自定义的编辑器界面、添加交互功能、访问和修改对象属性等。通过灵活运用这些类,开发者可以实现各种自定义的编辑器扩展功能。


三、相关API

在使用Unity编辑器扩展之前,有一些重要的API是必须要提前了解的,后续在使用扩展时经常会用到,所以还是推荐在学习之前先去了解一下这些API的基本概念及功能。

上个部分已经对某些核心知识点进行简述了,这里放一下相关API的文档地址,方便后期学习时查阅使用。

API介绍
Editor用于创建、编辑和管理游戏资源的集成开发环境(IDE)。
Editor WindowsEditor Windows是一套强大的工具集,用于创建、编辑和管理游戏资源,包括场景、游戏对象、组件、脚本和项目。
MenuItemMenuItem可以将自定义的函数与Unity编辑器中的菜单项关联起来,以便在需要时执行相应的操作。
ContextMenuContextMenu是一个用于创建自定义上下文菜单的函数。通过使用ContextMenu,开发者可以创建一个与特定对象或场景关联的菜单,其中包含与该对象或场景相关的操作。这样,在选择一个对象或场景时,用户可以通过点击右键并从上下文菜单中选择相应的操作来执行特定的功能。
ContextMenuItemContextMenuItem允许开发者在Unity编辑器的上下文菜单中添加自定义的菜单项。通过使用ContextMenuItem,开发者可以创建与特定对象或场景相关的操作,并将其作为上下文菜单的一部分进行调用。
Custom Editors用于自定义Unity编辑器中特定类型游戏对象或组件的编辑器。通过创建自定义编辑器,开发者可以定制编辑器界面,以更好地支持特定类型的游戏对象或组件的编辑和可视化操作。
Property DrawerProperty Drawer是一个用于自定义Unity编辑器中特定类型游戏对象或组件的属性编辑器的组件。通过创建自定义Property Drawer,开发者可以定制特定类型游戏对象或组件的属性编辑界面,以更好地支持编辑和可视化操作。
InitializeOnLoadMethodInitializeOnLoadMethod是一种特殊的静态方法,用于在Unity应用程序加载时执行初始化操作。通过使用InitializeOnLoadMethod,开发者可以在应用程序加载时执行一些必要的初始化代码,以确保应用程序的正确运行。
SceneViewSceneView是一个用于编辑和预览游戏场景的视图窗口。通过SceneView,开发者可以在3D空间中直接观察和编辑游戏对象、场景布局和光照等元素,以便更好地理解游戏世界中的各种元素和交互关系。
TreeViewTreeView是一个用于显示树形结构的视图组件。它通常用于编辑器界面中,以帮助开发者管理和组织游戏中的层级结构。TreeView允许开发者以可视化的方式展开、折叠和编辑对象、文件夹和子级关系。
ScriptableWizardScriptableWizard是一个可扩展的创建和管理游戏对象和组件的工具。通过ScriptableWizard,开发者可以创建自定义的创建和管理流程,以支持特定的游戏对象和组件的创建、配置和附加。ScriptableWizard允许开发者将复杂的创建和管理过程封装为简单的用户界面操作,以便更轻松地管理游戏对象和组件。
HandleUtilityHandleUtility是一个用于处理3D物体在2D屏幕上的交互和操作的工具类。它提供了一组函数和方法,用于在2D游戏中处理物体的移动、旋转、缩放和交互等操作。HandleUtility可以帮助开发者更轻松地实现2D游戏中的各种交互效果,例如拖拽、缩放和旋转等操作。
EditorUtilityEditorUtility是一个用于创建自定义编辑器和工具的函数类。它提供了一系列静态方法,可以帮助开发者在Unity编辑器中执行各种编辑和操作任务。EditorUtility可以用于创建自定义的工具窗口、编辑器脚本和工具,以扩展Unity编辑器的功能和灵活性。
GenericMenuGenericMenu是一个用于创建自定义编辑器菜单的函数类。通过使用GenericMenu,开发者可以创建自定义的菜单项,并添加相关的操作和函数。GenericMenu提供了一种灵活的方式,以创建与特定游戏对象或场景相关的自定义编辑器菜单。
GizmosGizmos是一种用于场景中可视化调试或辅助设置的工具。它们以可视化的方式展示游戏对象或组件的属性,例如位置、旋转、碰撞体等,并且可以通过勾选右边的选择框来选择展示或隐藏某个脚本的Gizmos。Gizmos在场景视图中可见,但在游戏视图中不可见,也不需要运行执行。
HandlesHandles是一个用于在Unity编辑器中绘制和操作3D物体的工具集。通过使用Handles,开发者可以在3D空间中直接操作游戏对象,例如移动、旋转和缩放等操作。Handles提供了各种工具,例如移动和旋转工具、缩放工具和选择工具等,以帮助开发者更轻松地编辑游戏对象。
GUILayoutGUILayout是一个用于创建用户界面的布局和元素的函数类。通过使用GUILayout,开发者可以在Unity编辑器中创建可读的、可调整大小的界面元素,例如按钮、文本框、滑动条等。这些界面元素可以与用户的交互事件关联,以实现游戏中的用户界面交互功能。
GUIGUI是一个用于创建2D用户界面的系统。它提供了一组用于创建窗口、按钮、滑动条、文本框等用户界面的函数和工具。GUI可以让开发者在游戏运行时创建和显示2D用户界面,以实现游戏的各种交互和信息展示功能。
EditorGUILayoutEditorGUILayout是一个用于在Unity编辑器中创建用户界面的布局和元素的函数类。通过使用EditorGUILayout,开发者可以在Unity编辑器中创建用户界面元素,例如按钮、文本框、滑动条等,并对其进行布局和调整。这些界面元素可以与用户的交互事件关联,以实现游戏中的用户界面交互功能。EditorGUILayout提供了一种方便的、易于使用的工具,可以帮助开发者更轻松地在Unity编辑器中创建和管理用户界面。
EditorGUIEditorGUI是一个用于在Unity编辑器中创建用户界面的函数类。通过使用EditorGUI,开发者可以在Unity编辑器中创建各种用户界面元素,例如按钮、文本框、滑动条等,以实现游戏中的用户界面交互功能。EditorGUI提供了一组函数和方法,可以帮助开发者在Unity编辑器中创建和展示用户界面元素。

Unity编辑器相关的大致内容也可以参考下面这张思维导图。
请添加图片描述


总结

本文是Unity 编辑器扩展专栏的入门篇,介绍了Unity编辑器扩展的基本概念、核心知识点和API。轻松掌握编辑器扩展的基础,为后续深入学习打下坚实的基础!

别急,精彩还在继续!将持续更新Unity编辑器扩展相关的学习内容,为大家呈现更多精彩篇章。敬请期待,与我们一起探索Unity编辑器扩展的奥秘!


  • 🎬 博客主页:https://xiaoy.blog.csdn.net

  • 🎥 本文由 呆呆敲代码的小Y 原创 🙉

  • 🎄 学习专栏推荐:Unity系统学习专栏

  • 🌲 游戏制作专栏推荐:游戏制作

  • 🌲Unity实战100例专栏推荐:Unity 实战100例 教程

  • 🏅 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📆 未来很长,值得我们全力奔赴更美好的生活✨

  • ------------------❤️分割线❤️-------------------------

请添加图片描述请添加图片描述请添加图片描述

请添加图片描述

资料白嫖,技术互助

学习路线指引(点击解锁)知识定位人群定位
🧡 Unity系统学习专栏 🧡入门级本专栏从Unity入门开始学习,快速达到Unity的入门水平
💛 Unity实战类项目 💛进阶级计划制作Unity的 100个实战案例!助你进入Unity世界,争取做最全的Unity原创博客大全。
❤️ 游戏制作专栏 ❤️ 难度偏高分享学习一些Unity成品的游戏Demo和其他语言的小游戏!
💚 游戏爱好者万人社区💚 互助/吹水数万人游戏爱好者社区,聊天互助,白嫖奖品
💙 Unity100个实用技能💙 Unity查漏补缺针对一些Unity中经常用到的一些小知识和技能进行学习介绍,核心目的就是让我们能够快速学习Unity的知识以达到查漏补缺

在这里插入图片描述

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

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

相关文章

0829|C++day7 auto、lambda、C++数据类型转换、C++标准模板库(STL)、list、文件操作

一、思维导图 二、【试编程】将实例化类对象写入容器后,写入.txt文本中,再重新定义一个类容器,将.txt中的内容读取出来,输出到终端 封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至…

字节前端实习的两道算法题,看看强度如何

最长严格递增子序列 题目描述 给你一个整数数组nums,找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7…

Hadoop 集群一直处于安全模式,强制退出后出现数据丢失警告。解决方法

文章目录 安全模式相关命令分析集群为什么一直处于安全模式解决方法 安全模式相关命令 # 查看安全模式状态 hdfs dfsadmin -safemode get# 进入安全模式 hdfs dfsadmin -safemode enter# 离开安全模式 hdfs dfsadmin -safemode leave# 强制退出安全模式 hdfs dfsadmin -safemo…

【补充】助力工业物联网,工业大数据之AirFlow安装

【补充】助力工业物联网,工业大数据之AirFlow安装 直接在node1上安装 1、安装Python 安装依赖 yum -y install zlib zlib-devel bzip2 bzip2-devel ncurses ncurses-devel readline readline-devel openssl openssl-devel openssl-static xz lzma xz-devel sqlit…

iOS实时监控与报警器

在现代信息化社会中,即使我们不在电脑前面也能随时获取到最新的数据。而苹果公司提供的iOS推送通知功能为我们带来了一种全新的方式——通过手机接收实时监控和报警信息。 首先让我们了解一下iOS推送通知。它是一个强大且灵活可定制化程度高、适用于各类应用场景&a…

图片转pdf软件有哪些?这几款收藏下来

图片转pdf软件有哪些?图片转PDF的需求很常见。有时候我们需要将一些图片文件合并成一个PDF文件,方便浏览和共享。比如说,你可能需要将一份报告或者简历的图片转换成PDF文件,以便于分享给其他人。此外,将图片转换成PDF文…

elasticsearch的搜索补全提示

当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项 拼音分词器 下载 要实现根据字母做补全,就必须对文档按照拼音分词,GitHub上有拼音分词插件 GitHub - medcl/elasticsearch-analysis-pinyin: This Pinyin Analysis plugin…

lv3 嵌入式开发-4 linux shell命令(文件搜索、文件处理、压缩)

目录 1 查看文件相关命令 1.1 常用命令 1.2 硬链接和软链接 2 文件搜索相关命令 2.1 查找文件命令 2.2 查找文件内容命令 2.3 其他相关命令 3 文件处理相关命令 3.1 cut 3.2 sed 过滤 3.3 awk 匹配 4 解压缩相关命令 4.1 解压缩文件的意义 4.2 解压缩相关命令 1 …

社区团购新玩法,生鲜蔬菜配货发货小程序商城

在当前的电商市场中,生鲜市场具有巨大的潜力和发展空间。为了满足消费者的需求,许多生鲜店正在寻找创新的方法来提高销售和客户满意度。其中,制作一个个性且功能强大的生鲜小程序商城是一个非常有效的策略。以下是在乔拓云平台上制作生鲜小程…

maven基础学习

什么是maven 构建 依赖 maven核心概念坐标 在黑窗口使用maven命令生成maven工程 pom.xml 想导入哪个jar包把它的坐标放到dependency里就可以 maven核心概念POM maven核心概念约定的目录结构 执行maven的构建命令 清理操作,clean 编译操作 compile 测试操作 test 打包…

基于Spring Boot的企业门户网站设计与实现(Java+spring boot+MySQL)

获取源码或者论文请私信博主 演示视频: 基于Spring Boot的企业门户网站设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java springboot…

BackgroudWork的详细用法,实例

一、什么是BackgroudWorker? 1、简言 backgroudworkd就是一个异步单线程,专门为入门级人员开发的。还可以显示进度条。操作简单实用,属于老技术。 注意:如果调用两次这个线程,将会出错。 2、backgroudwor…

025: vue父子组件中传递方法控制:$emit,$refs,$parent,$children

第025个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

Redis 复制(replica)

1. 是什么 1.1 官网地址 https://redis.io/docs/management/replication/ 1.2 一句话 1. 就是主从复制,master以写为主,slave以读为主 2. 当master数据变化的时候,自动将新的数据异步同步到其它slave数据库 2. 能干嘛 1. 读写分离 2. 容灾…

正规黄金代理的三大要素

对于现货黄金投资来说,寻找一个正规的黄金代理是十分重要的问题。在目前的现货黄金投资市场中,现货黄金代理的数量很多,他们都致力于耕耘现货黄金投资市场。当越来越多的专业人士加入到现货黄金投资的市场中当中时,这个市场将会越…

手写Mybatis:第10章-使用策略模式,调用参数处理器

文章目录 一、目标:参数处理器二、设计:参数处理器三、实现:参数处理器3.1 工程结构3.2 参数处理器关系图3.3 入参数校准3.4 参数策略处理器3.4.1 JDBC枚举类型修改3.4.2 类型处理器接口3.4.3 模板模式:类型处理器抽象基类3.4.4 类…

Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录

Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 目录 Unity Android 之 在Unity 中引入 OkHttp的操作注意(OKHttp4.xx- kotlin 的包)简单记录 一、简单介绍 二、OKHttp 4.xx 的 SDK 封装 aar 给 Unity 的使用注意 三、附录 OKHttp 的…

德庄借助纷享销客CRM系统实现高效管理

德庄集团创于1999年,是一家集餐饮产业、食品产业、科技研发及文化研究为一体的现代化民营企业,下属9家子公司、2大现代化食品加工基地、1所研究所、1所培训学校、1个技术中心。拥有德庄、青一色、滟设、香漫谷、饭空等8大子品牌,呈现出良好的…

IDEA新建SpringBoot项目时启动编译报错:Error:java: 无效的源发行版: 17

文章目录 原因检查解决步骤修改jdk修改SpringBoot版本 原因 出现这种错误的原因可能是: 本机默认使用(编译)的jdk与该项目所使用的jdk版本不同。 jdk版本不适用于这个Idea,很典型的一个例子就是使用的Idea是2020的,而…

【前端】CSS-Flex弹性盒模型布局

目录 一、前言二、Flex布局是什么1、任何一个容器都可以指定为Flex布局2、行内元素也可以使用Flex布局3、Webkit内核的浏览器,必须加上-webkit前缀 三、基本概念四、flex常用的两种属性1、容器属性2、项目属性 五、容器属性1、flex-direction①、定义②、语句1&…