Unity 3D 拓展编辑器 MenuItem 菜单

//--覆盖系统菜单

using UnityEditor;
using UnityEngine;

public class GameObjectUITextMyTools
{
    [MenuItem("GameObject/UI/Text")]
    static void CreateMyText()
    {
        Debug.Log("覆盖原有系统的创建Text");
    }
    //--覆盖原有系统可能会出现黄色警告。
}

按照它的原有菜单路径拼合。

//-------------------------------------------------------------

//--自定义菜单

可以设置路径 排序 勾选框 禁止选中状态等。

using UnityEditor;
using UnityEngine;

public class SelfUseMenuItemMyTools
{
    [MenuItem("MyRoot/Test0", false, 0)]
    static void Test0()
    {
        Debug.Log("MyRoot/Test0");
    }
    [MenuItem("MyRoot/Test1", false, 1)]
    static void Test1()
    {
        Debug.Log("MyRoot/Test1");
    }
    //--菜单有条件置灰,不可点击
    [MenuItem("MyRoot/SelectObjlogName", true, 15)]
    static bool SelectObjlogNameBool()
    {
        if (Selection.activeTransform != null)
        {
            return true;
        }
        return false;
    }
    [MenuItem("MyRoot/SelectObjlogName")]
    static void SelectObjlogName()
    {
        Debug.Log(Selection.activeTransform.name);
    }
    //--勾选框
    [MenuItem("MyRoot/Checked",false,2)]
    static void Checked()
    {
        string menuPath = "MyRoot/Checked";
        bool mchecked = Menu.GetChecked(menuPath);
        Menu.SetChecked(menuPath, !mchecked);
    }
}

//-------------------------------------------

//--源生自定义菜单

using UnityEditor;
using UnityEngine;

public class SceneSelfMenuItemMyTools
{
    //--在Scene视图中鼠标右键抬起呼出自定义菜单
    [InitializeOnLoadMethod]
    static void InitializeOnLoadMethod()
    {
        SceneView.onSceneGUIDelegate = delegate (SceneView sceneView)
        {
            Event e = Event.current;
            if (e != null && e.button == 1 && e.type == EventType.MouseUp)
            {
                Vector2 mousePosition = e.mousePosition;
                var options = new GUIContent[]
                {
                    new GUIContent("text1"),
                    new GUIContent("text2"),
                    new GUIContent(),
                    new GUIContent("text3/001"),
                    new GUIContent("text3/002"),
                };
                var selected = -1;
                var userData = Selection.activeGameObject;
                var width = 100;
                var height = 100;
                var position = new Rect(mousePosition.x, mousePosition.y - height, width, height);
                EditorUtility.DisplayCustomMenu(position, options, selected, delegate (object data, string[] opt, int select)
                {
                    Debug.Log(opt[select]);
                }, userData);
                e.Use();
            }
        };
    }
}

首先监听鼠标右键以获取鼠标位置,接着使用 EditorUtility.DisplayCustomMenu()方法来弹出自定义菜单,以及监听菜单选择后的事件。

//--------------------------------------------

//--拓展全局自定义快捷键

using UnityEditor;
using UnityEngine;

public class MyHotKeyMyTools
{
    [MenuItem("Assets/MyHotKey %#D", false, 20)]
    static void MyHotKey()
    {
        Debug.Log("MyHotKey : Ctrl + Shift + D");
    }
}

其他热键:

% : 表示Windows 下的 Ctrl 键和 macOS 下的 Command 键。

# : 表示 Shift 键。

& : 表示 Alt 键。

LEFT/RIGHT/UP/DOWN : 表示左 右 上 下 4个方向键。

F1...F12 : 表示F1至F12菜单键。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Unity3D模型编辑器是一种利用游戏引擎开发的工具,用于创建、编辑和操作3D模型的软件。通过这个编辑器用户可以进行模型的创作、修改和优化,实现各种形状、纹理和动画效果。 以下是一些常见的功能和特点,可以在Unity3D模型编辑器中实现: 1. 模型导入和导出:支持常见的3D模型文件格式,如FBX、OBJ等,并能够导入和导出这些文件,与其他软件进行兼容。 2. 建模工具:提供丰富的建模工具,如绘制、拉伸、旋转、缩放等,以便用户可以创建各种形状和结构的模型。 3. 材质编辑:允许用户为模型添加材质和纹理,调整颜色、光照、透明度等属性,以获得更真实的渲染效果。 4. 动画编辑:支持动画制作,用户可以为模型添加骨骼、关键帧和动作序列,并进行动画编辑和调整。 5. 粒子特效:提供创建和编辑粒子特效的工具,让用户可以为模型添加各种粒子效果,如火焰、烟雾、爆炸等。 6. 物理模拟:支持物理引擎,让用户可以为模型添加碰撞体、刚体等物理属性,实现真实的物理效果和交互。 7. UV编辑:提供模型的UV编辑工具,让用户可以调整纹理的映射方式,以实现更精细的纹理贴图效果。 8. 网格优化:提供网格优化工具,可以帮助用户优化模型的顶点数、面数等,以减少模型的资源消耗和渲染负荷。 通过使用Unity3D模型编辑器,开发者可以创建出精美的3D模型,并进行各种编辑和优化操作,以满足项目需求。同时,Unity的强大性能和跨平台支持,也使得这个编辑器成为了许多游戏开发者、设计师和艺术家的首选工具之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值