Unity插件开发笔记

插件特点,无需运行可进行编译。

分为3大类插件:菜单项相关操作、自定义Inspector检视面板、自定义操作界面。

一.菜单项相关操作的插件分为4种:包含MenuItem菜单项插件、AddComponentMenu组件菜单插件、ContextMenu上下文菜单插件、RequireComponent必要组件菜单

1.MenuItem菜单项插件

(0)选项出现位置:编辑器上方菜单栏 。

(1)脚本放置的目录:Assets/Editor(该目录不会被打到包里)。

(2)创建如下方代码:需要命名空间UnityEditor;可自定义入口路径和自定义快捷键;菜单方法必须是static静态类方法(放在该脚本类的内部)。

(3)特点:无需放到场景里也无需运行,点击使用即可进行编译。

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;//MenuItem类插件需要该命名空间

public class MenuItem_Test1 : MonoBehaviour
{
    //快捷键类型(H是可自定义按键)
    //_H:单一个自定义按键
    //#H: Shift+自定义按键
    //%H:Ctrl+自定义按键
    //&H: Alt+自定义按键
    [MenuItem("Menu/Test_ _H")]//Menu/Test1是自定义的菜单路径,H是自定义的快捷键,放在该MenuItem_Test1类的里面
    public static void Test1()//定义MenuItem菜单操作:菜单必须是static静态方法
    {
        Debug.Log("Test_");
    }

    [MenuItem("Menu/Test# #H")]
    public static void Test2()
    {
        Debug.Log("Test#");
    }

    [MenuItem("Menu/Test% %H")]
    public static void Test3()
    {
        Debug.Log("Test%");
    }

    [MenuItem("Menu/Test& &H")]
    public static void Test4()
    {
        Debug.Log("Test&");
    }
}

2.AddComponentMenu组件菜单插件

(0)选项出现位置:节点上AddComponent增加组件时的可选组件列表里 。

(1)脚本放置的目录:一般在Assets/Script里(可自定义,会被打到包里的目录即可)。

(2)创建如下方代码:可自定义在添加组件时的菜单路径(放在该脚本类的前面)。

(3)特点:跟组件一样,需放到场景里也需运行,才可进行编译。

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[AddComponentMenu("Menu/Test2")]//Test2是Component_Test1类脚本的组件名称,Menu/Test2是添加组件时的菜单路径,放在该Component_Test1类的前面
public class Component_Test1 : MonoBehaviour//定义Component操作
{
    void Start()
    {
        Debug.Log("Component_Test");
    }

    void Update()
    {
    }
}

3.ContextMenu上下文菜单插件

(0)选项出现位置:节点上的组件的右键菜单列表里 。

(1)脚本放置的目录:一般在Assets/Script里(可自定义,会被打到包里的目录即可)。

(2)创建如下方代码:可自定义在组件的右键菜单列表的菜单路径(放在该脚本类的内部)。

(3)特点:场景里需有所在的组件,但无需运行,点击使用即可进行编译。

cs 复制代码
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

[AddComponentMenu("Menu/Test2")]
public class Component_Test1 : MonoBehaviour
{
    void Start()
    {
        Debug.Log("Component_Test");
    }

    void Update()
    {
    }

    [ContextMenu("Menu3")]//Menu3是组件右键菜单列表里的路径,放在该Component_Test1类的内部
    public void Test()//定义ContextMenu菜单操作
    {
        Debug.Log("ContextMenu_Test");
    } 
}

4.RequireComponent必要组件菜单

(0)选项出现位置:无菜单,自动添加关联的必要组件。

(1)脚本放置的目录:一般在Assets/Script里(可自定义,会被打到包里的目录即可)。

(2)创建如下方代码:可自定义在添加组件时的菜单路径(放在该脚本类前面AddComponentMenu语句的前面)。

(3)特点:场景里需添加对应组件,无需运行,即可自动进行编译。

cs 复制代码
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

[RequireComponent(typeof(Rigidbody))]//设置该脚本类Component_Test1的必要组件菜单-Rigidbody(自定义的必要组件):添加该脚本,会自动添加Rigidbody组件。不算严格意义的组件,主要是给该脚本类设置关联。Rigidbody是依附于该脚本类Component_Test1的,需先删除本脚本,才能删除Rigidbody组件
[AddComponentMenu("Menu/Test2")]
public class Component_Test1 : MonoBehaviour
{
    void Start()
    {
        Debug.Log("Component_Test");
    }

    void Update()
    {
    }
}
相关推荐
Keep Running *1 天前
Spring Cloud Alibaba_学习笔记
笔记·学习
我不是懒洋洋1 天前
AI的影响6
笔记
咖啡忍者1 天前
【SAP CO】4.COPC产品成本控制-3.WIP后台配置
笔记
mxwin1 天前
Unity Shader 跨平台兼容性:处理纹理坐标翻转与精度差异
unity·游戏引擎
王家视频教程图书馆1 天前
godot 下载地址
游戏引擎·godot
CheerWWW1 天前
深入理解计算机系统——位运算、树状数组
笔记·学习·算法·计算机系统
中屹指纹浏览器1 天前
2026浏览器指纹检测技术演进与多账号反检测实战策略
经验分享·笔记
独小乐1 天前
012.整体框架适配SDRAM|千篇笔记实现嵌入式全栈/裸机篇
c语言·汇编·笔记·单片机·嵌入式硬件·arm·gnu
卡布叻_星星1 天前
AI大模型之采用DeepSeek-Coder:6.7b + Ollama + Continue离线部署
笔记
wb1891 天前
NoSQL数据库Redis集群重习
数据库·redis·笔记·云计算·nosql