【第零章编辑器开发与拓展】

前言:对编辑器拓展与开发可以节省很多时间,提高开发效率,比如技能编辑器,关卡编辑器这种。当然这只是编辑器开发的一些典型应用,它能做不止这些。学习完这个之后,我们可以开发项目需要的工具。我本意在编辑器里为新项目使用的一个开源框架编写使用文档、项目文档。
编辑器开发与拓展,unity给我们提供了很多类,用来实现编辑器的开发。下面简单介绍一下,实际上也就几个类,简单理解就是

  • ​​UI层​​:GUILayout/EditorGUILayout区别点击链接跳转了解一下就行)
  • 数据层​​:SerializedObject/SerializedProperty
  • 交互层​​:Handles
  • 容器层​​:Editor/EditorWindow
  • 扩展层​​:PropertyDrawer
  • 辅助层​​:Undo/EditorUtility
层级核心类职责描述补充说明
数据层SerializedObject
SerializedProperty
安全访问序列化数据
• 多对象编辑支持
• 脏数据标记
• 撤销操作集成
编辑器与游戏对象间的数据桥梁,确保修改符合序列化规则
交互层Handles3D场景交互控制
• 场景视图控件绘制
• Gizmo操作
• 3D输入事件处理
Unity场景编辑的直接操作接口,提供可视化编辑能力
容器层Editor
EditorWindow
UI容器管理
• Inspector面板容器
• 工具窗口框架
• 生命周期控制
编辑器扩展的基础容器,分别用于组件面板和独立工具窗口
扩展层PropertyDrawer属性定制渲染
• 数据类型可视化扩展
• 自定义属性布局
• 渲染逻辑封装
针对特定数据类型(枚举/结构体)的渲染扩展点
辅助层Undo
EditorUtility
开发辅助工具
• 操作历史管理
• 进度条/弹窗控制
• 对象状态管理
编辑器工作流的效率工具集,提升开发体验和操作安全性
类名核心职责详细说明
GUILayout 与 EditorGUILayoutUI 控件渲染负责 UI 控件的绘制和布局管理:
• GUILayout:基础 UI 布局,适用于运行时和编辑器
• EditorGUILayout:编辑器专用 UI,支持序列化属性
两者区别详见正文
SerializedObject数据安全管理提供对序列化数据的安全访问:
• 获取 / 修改属性值
• 支持多对象编辑
• 自动处理脏数据标记
Undo操作历史管理实现撤销 / 重做功能:
• 记录对象修改历史
• 支持多步撤销
• 集成 Unity 编辑菜单
EditorUtility工具辅助提供实用编辑器服务:
• 进度条显示(DisplayProgressBar)
• 对话框(DisplayDialog)
• 对象脏标记(SetDirty)
Handles3D 场景交互Scene 视图专用控件:
• 创建移动 / 旋转 / 缩放手柄
• 绘制自定义 Gizmo
• 3D 辅助线绘制
EditorWindow窗口容器创建自定义工具窗口:
• 窗口生命周期管理
• 面板布局控制
• 菜单栏集成(MenuItem 属性)
PropertyDrawer属性定制显示特殊数据类型渲染优化:
• 枚举可视化
• 结构体自定义布局
• 数据验证(范围 / 格式检查)
EditorInspector 定制自定义组件检视面板:
• 重写 OnInspectorGUI()
• 使用 OnSceneGUI() 添加场景交互

在这里插入图片描述

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

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

相关文章

使用 mongoimport 导入本地 JSON 文件到 MongoDB 及数据查看指南

在项目中,我们经常需要将本地 JSON 文件批量导入 MongoDB 数据库。本文以 Ubuntu 22.04 环境为例,详细记录了如何安装 mongoimport 工具、正确导入多个 JSON 文件,以及查看导入后的数据。一、环境介绍操作系统:Ubuntu 22.04.5 LTS…

新手向:Python数据处理Excel报表自动化生成与分析

Python实现Excel报表自动化系统全流程指南本文将详细介绍如何使用Python实现一个完整的Excel报表自动化系统,涵盖从数据清洗、分析到可视化报表生成的全流程。本教程面向Python初学者,通过实际案例讲解pandas和openpyxl库的核心用法。系统概述Excel报表自…

【第六节】docker可视化工具portainer安装

该文章参考了这篇文章https://zhuanlan.zhihu.com/p/27740131259portainer是一个基于网页的docker可视化管理工具,试想一下我们怎么登录路由器管理界面的,异曲同工。那么就需要在服务器的docker内安装portainer,然后在我们的开发机或者说工作…

使用 Certbot 申请和自动续签 Let’s Encrypt 的免费 SSL 证书

一. Let’s Encrypt 介绍 Let’s Encrypt 是当前最常用的免费 HTTPS 证书生成工具之一。该服务由非营利组织提供,致力于为全球范围内的网站提供便捷的自动化证书颁发服务。虽然 Let’s Encrypt 证书的有效期只有90天,但是可以自动续期,这使得…

【kubernetes】--controller(DaemonSet)

Kubernetes DaemonSet 控制器详解 它确保集群中所有(或部分)节点上都运行一个 Pod 的副本。当有新节点加入集群时,DaemonSet 会自动在新节点上创建 Pod;当节点从集群中移除时,这些 Pod 也会被垃圾回收。 DaemonSet 的核心特性 每个节点一个 P…

内测分发平台应用的异地容灾和负载均衡处理和实现思路

内测分发平台应用的异地容灾和负载均衡处理和实现思路如下:一、异地容灾1.风险评估和需求分析:对现有的IT基础设施进行全面的风险评估和需求分析,评估潜在风险和灾害的可能性,以及确定业务和数据的关键性。2.设计备份架构&#xf…

【Vue】浏览器缓存 sessionStorage、localStorage、Cookie

嘿,各位 Vue 开发者们!今天咱们来好好聊聊浏览器里的三种缓存方式:sessionStorage、localStorage 和 Cookie。在实际开发中,合理运用这些缓存能让我们的应用性能大幅提升,同时避免一些不必要的问题。下面就跟着我的笔记…

c#如何将不同类型的数据存储到一起

在 C# 中,存储不同类型的数据有多种方式,具体选择取决于你的需求(类型安全、性能、灵活性等)。以下是常见的解决方案及其适用场景:1. 使用 object 类型(装箱 / 拆箱)将所有数据转换为基类 objec…

超唯美治愈风卡通插画PPT模版

海洋卡通风治愈系PPT模版,儿童可爱治愈可爱PPT模版,治愈风商务通用PPT模版,治愈系课件PPT模版,治愈风插画PPT模版,超唯美治愈风PPT模版,可爱插画治愈系女孩PPT模版 超唯美治愈风卡通插画PPT模版&#xff1a…

el-tooltip 快速滚动的时候出现残影如何解决 vue3

<el-tooltip:disabled"isScrolling" <!-- 新增滚动状态绑定 -->:popper-options"{ modifiers: [{ name: computeStyles, options: { adaptive: false }] }"effect"dark":content"label.name"placement"right-start"…

【经典面经】C++新特性 TCP完整收发数据 TLS1.2 TLS1.3

文章目录cpp新特性C11C14C17C20tcp如何保证完整收发数据结论1. **面向连接的三次握手**2. **字节序号与确认机制**3. **校验和&#xff08;Checksum&#xff09;**4. **超时重传与快速重传**5. **滑动窗口&#xff08;流量控制&#xff09;**6. **数据重组与排序**7. **四次挥手…

Spring AI 系列之十一 - RAG-进阶RetrievalAugmentationAdvisor

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

[TOOL] ubuntu 使用 ffmpeg 操作 gif、mp4

文章目录一、工具安装二、gif 转mp4三、mp4 两倍速一、工具安装 安装 ffmpeg 工具&#xff1a; sudo apt install ffmpeg二、gif 转mp4 1. 配置环境 核心指令: ffmpeg -i input.mp4 -filter_complex "[0:v]setpts0.5*PTS[v];[0:a]atempo2.0[a]" -map "[v]&q…

linux中INIT_MM_CONTEXT宏对pgd的重复赋值

在GNU C中&#xff0c;支持通过标号元素对指定结构体成员名进行初始化&#xff0c;这允许初始化值以任意顺序出现。在linux内核中对init_mm初始化时有如下代码。#define INIT_MM_CONTEXT(name) \.pgd init_pg_dir,struct mm_struct init_mm {.mm_rb RB_ROOT,.pgd swapper…

第十五章 STL(stack、queue、list、set、map容器使用)

栈stack使用&#xff1a;队列queue双向循环链表listlist构造函数list 赋值和交换list 大小操作list 插入和删除list 数据存取list 反转和排序排序算法sort降序操作排序案例#include<iostream> using namespace std; #include<list>class Person { private:string n…

【论文阅读】HCCF:Hypergraph Contrastive Collaborative Filtering

论文出处&#xff1a;SIGIR 2022 CCF-A 论文地址&#xff1a;Hypergraph Contrastive Collaborative Filtering 论文代码&#xff1a;akaxlh/HCCF: HCCF, SIGIR 2022 目录 摘要 介绍 研究背景与核心问题 现有方法局限性 HCCF的创新解决方案 技术优势 定义与相关工作 …

Retrofit+RxJava:打造声明式REST客户端的艺术 —— 像点咖啡一样调用API

目录一、告别Callback地狱&#xff1a;声明式编程的魅力1.1 传统网络请求的痛点1.2 Retrofit的声明式革命二、Retrofit核心配置工厂2.1 构建Retrofit实例2.2 常用注解速查表三、RxJava响应式魔法3.1 链式调用优雅变身3.2 超能力操作符盘点四、实战演练&#xff1a;构建天气查询…

【离线数仓项目】——任务调度与数据可视化实战

摘要 本文主要围绕离线数仓项目中的任务调度与数据可视化实战展开&#xff0c;介绍了业务流程虚拟节点、离线数仓任务调度、数据可视化等方面的内容&#xff0c;涉及DataWorks和QuickBI等工具的使用&#xff0c;并提供了相关的博文参考和项目实战域信息。 1. 任务调度管理实战…

【视频格式转换】.264格式转为mp4格式

背景 视频格式转换是多媒体处理中的常见需求&#xff0c;尤其在视频编辑、存储或跨平台播放时。H.264&#xff08;即AVC&#xff09;是一种广泛使用的视频编码标准&#xff0c;以其高压缩率和良好兼容性著称&#xff0c;但通常以容器格式&#xff08;如.264裸流文件&#xff0…

JAVA学习笔记 使用notepad++开发JAVA-003

目录 1 前言 2 部署notepad的java开发环境 2.1 下载并安装notepad 2.2 设置新建文件的语言 2.3 安装NppExec插件 2.4 编写JAVA脚本 2.5 设置脚本执行快捷键 2.6 效果测试 3 小结 1 前言 JAVA可以使用记事本来编写代码&#xff0c;但是这种方式效率十分低下。我们可以使…