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

news/2024/12/1 8:57:50/

        汇总一些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


http://www.ppmy.cn/news/33589.html

相关文章

WPF 认识WPF

什么是WPF?WPF是Windows Presentation Foundation(Windows展示基础)简称,顾名思义是专门编写表示层的技术。WPF绚丽界面如下:GUI发展及WPF历史?Windows系统平台上从事图形用户界面GUI(Graphic User Interface)已经经历了多次换代&#xff0c…

《C++ Primer Plus》(第6版)第13章编程练习

《C Primer Plus》(第6版)第13章编程练习《C Primer Plus》(第6版)第13章编程练习1. Cd类2. 使用动态内存分配重做练习13. baseDMA、lacksDMA、hasDMA类4. Port类和VintagePort类《C Primer Plus》(第6版)第…

基于STM32的ADC采样及各式滤波实现(HAL库,含VOFA+教程)

前言:本文为手把手教学ADC采样及各式滤波算法的教程,本教程的MCU采用STM32F103ZET6。以HAL库的ADC采样函数为基础进行教学,通过各式常见滤波的实验结果进行分析对比,搭配VOFA工具直观的展示滤波效果。ADC与滤波算法都是嵌入式较为…

应用服务漏洞扫描与利用

任务环境说明: 服务器场景:Server15服务器场景操作系统:未知(关闭链接)使用命令nmap探测目标靶机的服务版本信息,将需要使用的参数作为FLAG进行提交;FLAG:sV 通过上述端口访问靶机系统并探测隐藏的页面,将找到的敏感文件、目录名作为FLAG(形式:[敏感文件或目录1,敏感…

不要迷信 QUIC

很多人都在强调 QUIC 能解决 HoL blocking 问题,不好意思,我又要泼冷水了。假设大家都懂 QUIC,不再介绍 QUIC 的细节,直接说问题。 和 TCP 一样,QUIC 也是一个基于连接的,保序的可靠传输协议,T…

redis 存储一个map 怎么让map中其中一个值设置过期时间,而不是过期掉整个map?

文章目录 redis 存储一个map 怎么让map中其中一个值设置过期时间,而不是过期掉整个map?Java 中 怎么 实现?方案一: Jedis方案二: Lettuce方案三: Redisson方案四: Jedisson方案五: RedisTemplate那种方式 效率最高 ?拓展:结语redis 存储一个map 怎么让map中其中一个值设置过…

Java面试总结篇

引用介绍 1.线程安全不安全的概念 ​ 线程安全: 指多个线程在执行同一段代码的时候采用加锁机制,使每次的执行结果和单线程执行的结果都是一样的,不存在执行程序时出现意外结果。 ​ 线程不安全: 是指不提供加锁机制保护,有可能出现多个线程先后更改数据造成所得到的数据是脏…

【Arduino 和 MPU6050 加速度计和陀螺仪教程】

【Arduino 和 MPU6050 加速度计和陀螺仪教程】 1. 概述2. 工作原理3. Arduino 和 MPU60504. MPU6050 Arduino 代码5. MPU6050 方向跟踪 – 3D 可视化1. 概述 在本教程中,我们将学习如何将MPU6050加速度计和陀螺仪传感器与Arduino一起使用。首先,我将解释MPU6050的工作原理以…