Unity插件开发笔记

发布时间:2024年01月12日

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

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

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

1.MenuItem菜单项插件

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

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

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

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

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)特点:跟组件一样,需放到场景里也需运行,才可进行编译。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[AddComponentMenu("Menu/Test2")]//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)特点:场景里需有所在的组件,但无需运行,点击使用即可进行编译。

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)特点:场景里需添加对应组件,无需运行,即可自动进行编译。

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()
    {
    }
}

文章来源:https://blog.csdn.net/qq_29847807/article/details/135560408
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。