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()
    {
    }
}
相关推荐
疯狂打码的少年1 小时前
【数据结构】图的遍历:深度优先搜索(DFS)
数据结构·笔记·算法·深度优先
智者知已应修善业2 小时前
【51单片机数码管逐位显示1-8余位不亮】2024-10-23
c语言·经验分享·笔记·嵌入式硬件·51单片机
Wang's Blog2 小时前
PostgreSQL笔记16: 索引基础——概念、类型、创建与最佳实践
数据库·笔记·postgresql
ysa0510303 小时前
c++常用自带函数用法与注意
c++·笔记·算法
无聊的菜鸟3 小时前
TMS320F2806X学习笔记(一)—— 了解片上资源
笔记·ti·c2000·f2806x
帅_shuai_4 小时前
unity 静态字段内存查找工具
unity·游戏引擎
优化Henry4 小时前
学习笔记之爱立信站点指向证书执行
运维·服务器·网络·笔记·学习·信息与通信
IT古董6 小时前
【WMS学习笔记系列】03-功能模块设计
笔记·学习·系统架构
vivo互联网技术8 小时前
协同文档下的 Agent 协作闭环:可回滚、可对比的透明化编辑实现
人工智能·笔记·agent
Wang's Blog8 小时前
PostgreSQL笔记27: 双缓存架构下的内存管理与性能观测实践
笔记·缓存·postgresql