Unity 编辑器扩展 Hierarchy菜单扩展

这篇博客介绍了如何在Unity中扩展层级面板菜单,以便快速创建自定义Prefab。通过编写C#脚本`TitansHierarchyTools`,实现了在鼠标滚轮点击时显示扩展菜单,允许用户一键在当前选中物体的位置实例化预制体。这提高了Unity开发中的工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Unity的层级面板选中物体,右键会显示默认菜单,当你定义了自己的预制体,为了方便创建,可以将层级面板菜单扩展,一键添加你的Prefab。

系统默认菜单:
默认
扩展后的菜单:
扩展

using UnityEngine;
using UnityEditor;

public class TitansHierarchyTools
{
    [MenuItem("GameObject/TitansUI/ImageButton")]
    public static void CreateImageButton()
    {
        GameObject imgBtnRes = AssetDatabase.LoadAssetAtPath<GameObject>("UIPrefabs/ImageButton");
        GameObject imgBtnInstance = GameObject.Instantiate(imgBtnRes);
        imgBtnInstance.name = "ImageButton";

        Transform selection = Selection.activeTransform;
        if (selection != null)
        {
            imgBtnInstance.transform.SetParent(selection);
        }

        Selection.activeGameObject = imgBtnInstance;
    }

    [InitializeOnLoadMethod]
    private static void StartInitializeOnLoadMethod()
    {
        EditorApplication.hierarchyWindowItemOnGUI += OnHierarchyGUI;
    }

    private static void OnHierarchyGUI(int instanceID, Rect selectionRect)
    {
        if (Event.current != null && Event.current.button == 2 && Event.current.type <= EventType.MouseUp)
        {
            if (Selection.activeTransform)
            {
                Vector2 mousePosition = Event.current.mousePosition;
                EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "GameObject/", null);
            }
        }
    }
}

在层级面板中选中一个物体,按下鼠标滚轮键,会出现扩展之后的菜单。并会根据你是否选中了物体,将想要生成的Prefab生成在指定位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值