【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.mzph.cn/news/67141.shtml

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

相关文章

Java“牵手”1688商品列表数据,关键词搜索1688商品数据接口,1688API申请指南

1688商城是一个网上购物平台,售卖各类商品,包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取1688商品列表和商品详情页面数据,您可以通过开放平台的接口或者直接访问1688商城的网页来获取商品详情信息。以下是两种常用方法的介绍&…

成都瀚网科技有限公司:抖店的评论会消失吗?

抖店是抖音推出的电子商务平台。很多用户在购物后都会对产品进行评价。但有时用户可能会发现抖店评论缺失,让用户产生一些疑惑和困惑。本文将围绕这个问题提供一些答案和解决方案。 1.为什么抖店评论不见了? 首先需要明确的是,抖店评论消失可…

大数据Flink(七十):SQL 动态表 连续查询

文章目录 SQL 动态表 & 连续查询 一、​​​​​​​SQL 应用于流处理的思路

外观模式简介

概念: 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性,并将其封装在一个简单易用的接口中,使得客户端可以…

flutter 调出键盘和监听输入

调出键盘: void callKeyboard() {SystemChannels.textInput.invokeMethod<void>(TextInput.show);}监听按键: RawKeyboardListener(autofocus: true,onKey: (event) {if (event.runtimeType == RawKeyDownEvent) {if(event.data is RawKeyEventDataAndroid){RawKeyEve…

百度等8家企业首批上线大模型服务;大语言模型微调之道

&#x1f989; AI新闻 &#x1f680; 百度等8家企业首批上线大模型服务 摘要&#xff1a;百度、字节、中科院旗下8家企业/机构的大模型通过备案&#xff0c;正式面向公众提供服务。百度旗下AI大模型产品文心一言率先开放&#xff0c;用户可下载App或登录官网体验。百川智能也…

Blender里复制对象动画

假设在Blender里有2个对象&#xff0c;其中一个添加了动画&#xff0c;另外一个没有添加动画&#xff0c;那么如何把已有的动画拷贝到没有动画的对象上呢&#xff1f; 分为2步&#xff1a; 先选中没有动画的对象&#xff0c;再按shift键选中有动画的对象&#xff0c;此时2个对…

django/CVE-2017-12794XSS漏洞复现

docker搭建漏洞复现环境 漏洞原理看帮助文档 # Django debug page XSS漏洞&#xff08;CVE-2017-12794&#xff09;分析Django发布了新版本1.11.5&#xff0c;修复了500页面中可能存在的一个XSS漏洞&#xff0c;这篇文章说明一下该漏洞的原理和复现&#xff0c;和我的一点点评…

企业电子招投标采购系统源码之电子招投标的组成

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

vscode html使用less和快速获取标签less结构

扩展插件里面搜索 css tree 插件 下载 使用方法 选择你要生成的标签结构然后按CTRLshiftp 第一次需要在输入框输入 get 然后选择 Generate CSS tree less结构就出现在这个里面直接复制到自己的less文件里面就可以使用了 在html里面使用less 下载 Easy LESS 插件 自己创建…

逐鹿人形机器人,百度、腾讯、小米卷起来

长期不温不火的人形机器人产业迎来新风口&#xff0c;技术显著提升、新品层出不穷、资本投资态度也逐渐好转。 8月18日&#xff0c;2023世界机器人大会博览会正式开放&#xff0c;全面展示了机器人行业的新技术、新产品和新应用。据悉&#xff0c;此次展会展览总面积达4.5万平…

手写一个简单爬虫--手刃豆瓣top250排行榜

#拿到页面面源代码 request #通过re来提取想要的有效信息 re import requests import re url"https://movie.douban.com/top250"headers{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/11…

WPF C# .NET7 基础学习

学习视频地址&#xff1a;https://www.bilibili.com/video/BV1hx4y1G7C6?p3&vd_source986db470823ebc16fe0b3d235addf050 开发工具&#xff1a;Visual Studio 2022 Community 基础框架&#xff1a;.Net 6.0 下载创建过程略 .Net和.Framework 区别是Net是依赖项&#xff…

docker 笔记6:高级篇 DockerFile解析

目录 1.是什么&#xff1f; 2.构建三步骤 3.DockerFile构建过程解析 3.1 Dockerfile内容基础知识 3.2Docker执行Dockerfile的大致流程 总结 4.DockerFile常用保留字指令 5.案例&#xff1a;自定义镜像 5.1 要求&#xff1a; Centos7镜像具备vimifconfigjdk8 5.2编写 5…

css3对文字标签不同宽,不同高使用瀑布流对齐显示

<div class"wrapper" style"padding: 0;"><span class"wf-item task-tags text-center" v-for"(item,index) in data.categorys" :key"index">{{ item }}</span> </div>/* 名称瀑布流显示 */ .wrap…

机器学习和数据挖掘04-PowerTransformer与 MinMaxScaler

概念 PowerTransformer&#xff08;幂变换器&#xff09; PowerTransformer 是用于对数据进行幂变换&#xff08;也称为Box-Cox变换&#xff09;的预处理工具。幂变换可以使数据更接近正态分布&#xff0c;这有助于某些机器学习算法的性能提升。它支持两种常用的幂变换&#x…

【golang】调度系列之goroutine

前面的两篇&#xff0c;从相对比较简单的锁的内容入手(也是干货满满)&#xff0c;开始了go的系列。这篇开始&#xff0c;进入更核心的内容。我们知道&#xff0c;go应该是第一门在语言层面支持协程的编程语言(可能是我孤陋寡闻)&#xff0c;goroutine也完全算的上是go的门面。g…

【Image captioning】Meshed-memory transformer自有数据集的文件预处理

Meshed-memory transformer自有数据集的文件预处理 作者:安静到无声 个人主页 目录 Meshed-memory transformer自有数据集的文件预处理生成与coco_detections.hdf5相似的特征文件生成训练、测试和验证对应的JSON和字幕ID推荐专栏生成与coco_detections.hdf5相似的特征文件 c…

PMD 检查java代码:过早声明变量(PrematureDeclaration)

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_codestyle.html#prematuredeclaration 检查变量是否过早声明。如果变量在一个代码块前声明&#xff0c;但这个代码块没有用到该变量且该代码块有可能返回或者抛出异常&#xff0c;导致定义的变量用不到&#xff0c;就…

YOLOV7 添加 CBAM 注意力机制

用于学习记录 文章目录 前言一、CBAM1.1 models/common.py1.2 models/yolo.py1.3 yolov7/cfg/training/CBAM.yaml2.4 CBAM 训练结果图 前言 一、CBAM CBAM: Convolutional Block Attention Module 1.1 models/common.py class ChannelAttention(nn.Module):def __init__(sel…