Unity扩展编辑器功能的特性

news2024/10/6 1:34:00

1.添加分组标题

用于在Unity的Inspector视图中为属性或变量组创建一个自定义的标题或头部,有助于在Inspector中组织和分类不同的属性,使其更易于阅读和管理。

[Header("Common Properties")]
public float MouseSensitivity = 5;
public float SmothTime = 0.1f;

void Start()
{
    //Header应用于属性和字段上
}

2.Assets创建功能添加菜单

用于在Unity的Project视图的右键菜单中创建一个新的自定义资源(Asset)。这个属性通常用于脚本,这些脚本定义了可以在Unity项目中被实例化为Asset的自定义数据类型。

[CreateAssetMenu(menuName ="MyCustomMenu/CustomData")]
public class MyCustomData : ScriptableObject
{
    //CreateAssetMenu主要应用于类上
}

3.工具栏添加菜单

用于在Unity编辑器的菜单栏中创建自定义菜单项。这个属性是UnityEditor命名空间中的一部分,并且它要求与之关联的方法必须是静态的

[MenuItem("CustomMenu/CustomFunc")]
public static void MenuCommand()
{
    //MenuItem应用于静态方法(static)上
}

4.添加组件菜单

用于自定义Unity编辑器中“Component”菜单下的显示选项,当你尝试向场景中的GameObject添加组件时。这个特性通常与继承自 MonoBehaviour的类一起使用,以便在Inspector窗口中提供自定义的添加方式。

[AddComponentMenu("MyCustomMenu/CustomComponent")]
public class MyCustomData : MonoBehaviour
{
    //与继承自MonoBehaviour的类一起使用
}

5.添加字段右键菜单

用于在对象的上下文菜单中添加一个自定义菜单项。当用户在Unity编辑器中选择一个具有这个特性附加的组件或资源,并右键点击时,该菜单项就会出现。

[ContextMenuItem("CustomOption", "FuncA")]
public int customValue;

public void FuncA()
{
    //第一个参数为选项名称,第二个参数为被调用的函数的名称
}

6. 组件自定义编辑器

用于指定一个自定义的编辑器类来编辑某个特定的Unity组件(通常是继承自MonoBehaviour的类)

using System.Collections;
using UnityEngine;
using UnityEditor;

// 这是你要为其创建自定义编辑器的组件  
[AddComponentMenu("MyComponent")]
public class MyComponent : MonoBehaviour
{
    public int someValue = 0;
    public bool isBool;
    // ... 其他组件字段 ...  
}

// 自定义编辑器类,用于编辑MyComponent  
[CustomEditor(typeof(MyComponent))]
public class MyComponentEditor : Editor
{
    // 获取当前被编辑的MyComponent实例  
    private MyComponent myTarget;

    // 当编辑器被创建时调用  
    void OnEnable()
    {
        // 获取当前编辑的对象  
        myTarget = (MyComponent)target;
    }

    // 在Inspector窗口中绘制自定义UI  
    public override void OnInspectorGUI()
    {
        // 绘制默认的组件字段  
        DrawDefaultInspector();

        // 添加自定义的编辑器GUI  

        GUILayout.Space(10); // 添加一些间距  
        EditorGUILayout.LabelField("自定义编辑器扩展", EditorStyles.boldLabel);

        // 添加一个字段的自定义编辑器  
        myTarget.someValue = EditorGUILayout.IntField("自定义值", myTarget.someValue);

        // 确保更改被应用  
        if (GUI.changed)
        {
            EditorUtility.SetDirty(myTarget); // 标记目标为已更改  
        }
    }
}

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

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

相关文章

Leetcode3192. 使二进制数组全部等于 1 的最少操作次数 II

Every day a Leetcode 题目来源:3192. 使二进制数组全部等于 1 的最少操作次数 II 解法1:遍历 由于 nums[i] 会被其左侧元素的操作影响,所以我们先从最左边的 nums[0] 开始思考。 分类讨论: 如果 nums[0]1,无需反…

CSS Flex弹性布局

一、传统布局与flex布局 1、传统布局 2、flex布局 二、flex布局原理 1、布局原理 2、flex布局体验 三、flex布局父项常见属性 1、常见的父项属性 2、flex-direction设置主轴的方向 3、justify-content 设置主轴上的子元素排列方式 4、flex-wrap 设置子元素是否换行 …

cv实战(一)

目录 前言一、加密解密图像1.常用的算法1.1 空间域加密技术:1.2 基于频域的水印技术:1.3 Arnold变换:1.4 DES与AES算法: 2.实验代码结果 二、数字汉字识别代码结果: 三 物体识别代码结果 四,物块追踪代码结…

【高性能服务器】服务器概述

🔥博客主页: 我要成为C领域大神🎥系列专栏:【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞👍收藏⭐评论✍️ 本博客致力于知识分享,与更多的人进行学习交流 ​ 服务器概述 服…

C++ | Leetcode C++题解之第206题反转链表

题目: 题解: class Solution { public:ListNode* reverseList(ListNode* head) {if (!head || !head->next) {return head;}ListNode* newHead reverseList(head->next);head->next->next head;head->next nullptr;return newHead;} …

PD芯片OTG功能的应用 LDR6500

随着科技的飞速发展,智能手机、平板电脑等电子设备已经成为我们日常生活和工作中不可或缺的工具。这些设备的功能日益强大,应用场景也愈发广泛,但随之而来的是对充电和数据传输效率的高要求。在这一背景下,PD(Power De…

DM 的断点续传测试

作者: 大鱼海棠 原文来源: https://tidb.net/blog/4540ae34 一、概述 DM有all、full、incremental三种数据迁移同步方式(task-mode),在all同步模式下,因一些特殊情况,需要变更上游MySQL的数…

OFDM的基本原理

OFDM技术使用相互正交的子载波组成多载波传输数据,此时不存在子载波间干扰和符号间干扰。设采样间隔为 ,正交子载波可以表示为 基带信号a(n)采用矩形脉冲,则OFDM信号用公式可以表示 OFDM信号的N个采样点数据 可以用IFFT简化上述计算&#xf…

(已解决)Adobe Flash Player已不再受支持

文章目录 前言解决方案 前言 一般来说,很少遇到官方网站使用Adobe Flash Player来进行录用名单公示了。但是,今天就偏偏遇到一次, 用谷歌浏览器打不开, 点了没有反应,用其他的浏览器,例如windows自带的那…

英飞凌TC3xx之DMA工作原理及应用实例

英飞凌TC3xx之DMA工作原理及应用实例 1 DMA的架构2 必要的术语解释3 DMA请求3.1 DMA软件请求3.2 DMA硬件请求3.3 DMA 菊花链请求3.4 DMA自动启动请求3.5 总结4 小结DMA是直接存储访问Direct Memory Access的简称。它的唯一职能就是在不需要CPU参与的情况下,将数据从源地址搬运…

正版软件 | R-Drive Image:数据安全守护者,您的智能备份专家

在数字化时代,数据安全的重要性不言而喻。R-Drive Image 是一款功能强大的备份和恢复软件,为您提供了全面的解决方案,确保您的数据安全无忧。 精确备份,全面保护 R-Drive Image 能够创建硬盘驱动器的逐字节副本,无论是…

KBL410-ASEMI智能AI专用整流桥KBL410

编辑:ll KBL410-ASEMI智能AI专用整流桥KBL410 型号:KBL410 品牌:ASEMI 封装:KBL-4 正向电流(Id):4A 反向耐压(VRRM):1000V 正向浪涌电流:2…

2024百度之星第一场-110串

补题链接: 码蹄集 三个状态转移的计数dp 先确定状态 n个数至多修改k次,保证不出现字串“110” 常规想法先把状态确定为dp[n][k][0/1],前n个数,修改k次后,末尾数为0/1,不能转移再换思路。 初始状态设定如…

PySide(PyQt)在图像上画线

1、按鼠标左键任意画线 import sys from PySide6.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget from PySide6.QtGui import QPainter, QPixmap, QMouseEvent, QColor, QPen from PySide6.QtCore import Qt, QPointclass PaintLabel(QLabel):def __init__(self…

python–基础篇–正则表达式–是什么

文章目录 定义一:正则表达式就是记录文本规则的代码定义一:正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。初识 Python 正则表达式 定义一&a…

Python: PyCharm 2023.1 调试

1.设断点 (行号对应的红色点,在需要设置断点的代码行与行号之间鼠标点击即可以设置) 2.shiftF9,或 altshiftf9 选择文件 或是在菜单 Run->debug "main" 或是在菜单Run->debug 选择文件 (鼠标光标放在设置第一个…

单片机学习(16)--直流电机驱动

直流电机驱动 15.1直流电机驱动基础知识1.直流电机介绍2.电机驱动电路3.PWM介绍 15.2LED呼吸灯和直流电机调速1.LED呼吸灯代码2.直流电机调速(1)产生PWM的方法(2)工程目录(3)main.c函数 15.1直流电机驱动基…

一秒记单词:音通义通,一秒牢记

一秒记单词,从小学到高中,一秒牢记 一、小学生记单词,快速突破 1.1 好的开始,是成功的一半 sun n.太阳 【通】尚 moon n.月亮 【通】母恩 mother n.母亲,妈 【通】妈汁 sea n.海,大海 【通】细 sand …

简述设计模式-工厂模式

概述 工厂模式是为了提供创建对象的方式,无需制定要创建的具体类。 举个例子,假如我是甲方需要制造一辆车,我可以要油车,可以要电车,也可以油电混动车,如果没有工厂,我需要自己找到对应的制造…

操作系统——调度

概念: 当有一堆任务要处理,但由于资源有限,这些事情没法同时处理。这就需要确定某种规则来决定处理这些任务的顺序 三个层次: 高级调度(作业调度): 按一定的原则从外存的作业后备队列中挑选一…