当前位置: 首页 > news >正文

【Unity小知识】Editor编写常用方法汇总

        汇总一些Unity Editor开发的常用方法和实现方式,会持续更新。

添加自定义菜单栏方法

using UnityEngine;
using UnityEditor;public class EditorTools : EditorWindow
{[MenuItem("EditorTools/自定义的编辑器方法")]public static void CustomEditroFunction(){Debug.Log("Here is your code...");}
}

如图一,添加自定义的菜单栏需要使用UnityEditor的命名空间,我们自定义的EditorTools类需要继承EditorWindow类。然后就是定义菜单栏点击后所执行的具体函数CustomEditroFunction,这里需要注意的是函数需要是静态函数,需要增加static关键字。MenuItem方法则是定义菜单栏的路径,菜单栏路径可以采用中文。图二则是自定义菜单栏的效果。

EditorWindow类文档连接:https://docs.unity3d.com/cn/2022.2/ScriptReference/EditorWindow.html

添加Inspector中脚本自定义方法

using UnityEngine;
using UnityEngine.UI;
using UnityEditor;[CustomEditor(typeof(Text), true)]
public class TextEditor : Editor
{public override void OnInspectorGUI(){DrawDefaultInspector();CustomTextFunction();}private void CustomTextFunction(){if (GUILayout.Button("清空内容")){Text text = (Text)target;text.text = string.Empty;}}
}

这里我们为Unity原有的Text脚本增加功能按钮,添加自定义功能。

如图一,首先还是需要使用UnityEditor命名空间,自定义类TextEditor继承自Editor。通过覆写OnInspectorGUI方法实现Inspector中脚本的绘制,DrawDefaultInspector为绘制默认视图。接下来CustomTextFunction则是我们自定义的部分,通过GUILayout.Button("清空内容")方法绘制自定义按钮,if语句中则是点击按钮后的自定义功能,这里示例的则是清除了Text内容。实际效果如图二。

在示例代码中需要注意的是,[CustomEditor(typeof(Text), true)]指定了Inspector自定义脚本的类型,会为指定的自定义脚本添加功能。基类Editor包含成员target,通过target可以获取指定的脚本对象。

Editor类文档连接: https://docs.unity3d.com/cn/2022.2/ScriptReference/Editor.html

相关文章:

【Unity小知识】Editor编写常用方法汇总

汇总一些Unity Editor开发的常用方法和实现方式,会持续更新。 添加自定义菜单栏方法 using UnityEngine; using UnityEditor;public class EditorTools : EditorWindow {[MenuItem("EditorTools/自定义的编辑器方法")]public static void CustomEditroFu…...

【数据仓库-4】-- 提取、转换、装载(ETL)

1.数据抽取 1.1 逻辑抽取 1.1.1 全量数据抽取 一般发生在我们初始化时,需要一次性将源库(业务系统)的所有数据抽取到数据仓库的ODS层。 比如将一个全表导出数据文件或者查询源表所有数据的SQL语句, 都是全量抽取的例子。 select * from user.person; 1.1.2 增量数据抽取 对…...

【DBC专题】-12-不同类型报文(应用/诊断/网关/测量标定)在DBC中配置,以及在Autosar各模块间的信号数据流向

点击返回「Autosar从入门到精通-实战篇」总目录 案例背景(共18页精讲):该篇博文将告诉您: 1)Autosar中,不同类型报文(App应用,UDS/OBD诊断,NM网络管理报文,XCP测量标定)的信号数据流向; 2)CAN …...

【Linux】进程的基础概念 进程的相关操作 进程的状态

进程一、进程的基本知识1、基本概念2、进程的描述 —— PCB3、task_ struct内容分类二、进程的相关操作1、在Linux下查看进程2、通过系统调用在代码中获取进程标示符3、如何创建子进程4、关于fork()的一些深度理解三、进程的状态Linux中的进程的状态四、僵尸进程与孤儿进程僵尸…...

【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块

【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块前言1 ComM简介2 ComM功能介绍2.1 PNC 状态管理2.2 Channel状态管理2.3 通信禁止功能2.4 不同类型的NM2.5 User、PNC 与 Channel 的映射2.6 状态保存END前言 因为一个偶然的机会让我接触到了AUTOSAR,所以…...

BP插件开发(JAVA)

本文会包括BP插件开发流程及打包,API,javaswing(UI)部分的内容。阅读完本文后,读者将初步具有开发BP插件的能力。1 开始开发我们使用IDEA作为开发工具(使用其他IDE也绰绰有余)。引入依赖包&…...

【Zookeeper】介绍与配置

目录 概述 工作机制 特点 数据结构 应用场景 统一配置管理 统一集群管理 ​编辑 服务器动态上下线 软负载均衡 下载 启动 启动客户端 配置参数 集群配置 配置服务器编号 配置zoo.cfg 分发zoo.cfg配置文件 选举机制 第一次启动 非第一次启动 集群启动停止脚本…...

chrome快捷键

Ctrl T:打开新标签页。Ctrl W:关闭当前标签页。Ctrl Shift T:重新打开最近关闭的标签页。Ctrl Tab:在打开的标签页之间切换。Ctrl Shift Tab:在打开的标签页之间反向切换。Ctrl N:打开新窗口。Ctrl…...

手搓string类

手搓string类 文章目录手搓string类string的成员一.构造,拷贝构造,赋值重载和析构1.构造函数2.拷贝构造3.swap问题4.赋值重载5.析构函数二.简单接口1.c_str2.size(有效字符长度)3.capacity(有效字符容量)4.operator[]5.迭代器和范…...

小白学Pytorch系列--Torch API (7)

小白学Pytorch系列–Torch API (7) Comparison Ops allclose 此函数检查输入和其他是否满足条件: >>> torch.allclose(torch.tensor([10000., 1e-07]), torch.tensor([10000.1, 1e-08])) False >>> torch.allclose(torch.tensor([10000., 1e-…...

函数(上)——“Python”

各位CSDN的uu们你们好呀,今天小雅兰的内容是Python的函数呀,下面,就让我们进入函数的世界吧 首先可以选择性地看一下小雅兰很久之前写的C语言函数章节的知识: 函数——“C”_认真学习的小雅兰.的博客-CSDN博客 函数递归&#xf…...

ChatGPT说:如何利用ChatGPT变现?躺着赚钱不是梦。

您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏&…...

4.网络爬虫—Post请求(实战演示)

网络爬虫—Post请求实战演示POST请求GET请求POST请求和GET请求的区别获取二进制数据爬[百度官网](https://www.baidu.com/)logo实战发送post请求百度翻译实战使用session发送请求模拟登录17k小说网常见问题前言: 📝​📝​此专栏文章是专门针对…...

【视频文稿】车载Android应用开发与分析 - 开发系统应用

本期视频地址:https://www.bilibili.com/video/BV1NY411z7TK/ 前言 Hello,大家好,我是林栩。 开发车载应用,其实主要都是在Android系统中编写各种系统应用,所以上期视频先介绍了Android系统源码的下载和编译流程&…...

Scala流程控制

目录 单分支 双分支 多分支 for 循环控制 循环守卫 循环步长 循环嵌套 循环返回值 While 和 do..While 循环控制 While循环控制 do..While 循环控制 循环中断 单分支 if (条件表达式) {执行代码块 }var age StdIn.readShort()if (age < 18){println("童年&quo…...

人脸活体检测系统(Python+YOLOv5深度学习模型+清新界面)

摘要&#xff1a;人脸活体检测系统利用视觉方法检测人脸活体对象&#xff0c;区分常见虚假人脸&#xff0c;以便后续人脸识别&#xff0c;提供系统界面记录活体与虚假人脸检测结果。本文详细介绍基于YOLOv5深度学习技术的人脸活体检测系统&#xff0c;在介绍算法原理的同时&…...

prometheus03-如何导出prometheus指标

Prometheus是一个开源的监控系统和时间序列数据库&#xff0c;用于收集和存储服务的指标数据。要导出Prometheus指标&#xff0c;你需要使用或实现一个Prometheus Exporter。以下是一个简单的指南&#xff0c;分为三个主要步骤&#xff1a; 选择或实现Prometheus Exporter Pr…...

Linux驱动开发——串口设备驱动

Linux驱动开发——串口设备驱动 一、串口简介 串口全称叫做串行接口&#xff0c;通常也叫做 COM 接口&#xff0c;串行接口指的是数据一个一个的顺序传输&#xff0c;通信线路简单。使用两条线即可实现双向通信&#xff0c;一条用于发送&#xff0c;一条用于接收。串口通信距…...

LeetCode--缺失的第一个正数(41)和 接雨水(42)

目录 缺失的第一个正数 接雨水 0ms&#xff0c;100% 代码 缺失的第一个正数 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/first-missing-positive 题目&#xff1a;给你一个未排序的整数数组 nums &#xff0c;请…...

java源码阅读---ReentrantLock源码解析

ReentrantLock源码解读 在讲ReentrantLock之前我们先看一下Lock接口里的方法 Lock接口中的方法 lock()方法 void lock(); //直接加锁,如果加锁失败什么也不返回lockInterruptibly()方法 void lockInterruptibly() throws InterruptedException;lockInterruptibly()方法能够…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

数据库正常,但后端收不到数据原因及解决

从代码和日志来看&#xff0c;后端SQL查询确实返回了数据&#xff0c;但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离&#xff0c;并且ai辅助开发的时候&#xff0c;很容易出现前后端变量名不一致情况&#xff0c;还不报错&#xff0c;只是单…...

k8s从入门到放弃之Pod的容器探针检测

k8s从入门到放弃之Pod的容器探针检测 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;容器探测是指kubelet对容器执行定期诊断的过程&#xff0c;以确保容器中的应用程序处于预期的状态。这些探测是保障应用健康和高可用性的重要机制。Kubernetes提供了两种种类型…...

2025年全国I卷数学压轴题解答

第19题第3问: b b b 使得存在 t t t, 对于任意的 x x x, 5 cos ⁡ x − cos ⁡ ( 5 x t ) < b 5\cos x-\cos(5xt)<b 5cosx−cos(5xt)<b, 求 b b b 的最小值. 解: b b b 的最小值 b m i n min ⁡ t max ⁡ x g ( x , t ) b_{min}\min_{t} \max_{x} g(x,t) bmi…...