Unity编辑器Hierarchy扩展中文教程——Chinar图文详解

Chinar blog www.chinar.xin

Hierarchy 编辑器扩展详细说明


本文提供全流程,中文翻译

助力快速掌握编辑器对 Unity Hierarchy 的扩展、及效果展示

为初学者节省宝贵的时间,避免采坑!

Chinar —— 心分享、心创新!

我们的初衷是将一种简单的生活方式带给世人

使有限时间 具备无限可能

Chinar 教程效果:
在这里插入图片描述



全文高清图片,点击即可放大观看 (很多人竟然不知道)


Intro —— 简介


为了开发的便利性,我们经常要使用的是 Hierarchy 右键菜单,操控不同的游戏对象

那么为了方便,我们就可对现有的 Hierarchy 右键菜单进行扩展
举个例子
在这里插入图片描述
我们可根据选择对象条件进行重制,自行定义功能和排序

下图是对预设物进行操作时,弹出新菜单

在这里插入图片描述


2

HierarchyWindowItemOnGUI —— 新建 Hierarchy 右键菜单


我们通过委托 HierarchyWindowItemOnGUI 即可将右键重绘新右键菜单

右键 Hierarchy 时,菜单显示为我们指定的的 菜单项
在这里插入图片描述
这里其实就是将右键菜单项,指向我们已经创建好的 菜单栏的某一项列表

可根据不同条件,指向不同菜单

下面例子,当点击对象为预设物时,可直接打开预设物

举个例子

伪代码

using UnityEditor;
using UnityEngine;


/// <summary>
/// Chinar编辑器 增强层次面板
/// </summary>
public class ChinarEditorHierarchy
{
    [MenuItem("Hierarchy/Chinar/打开预设", true, -1)]
    static bool 打开预设Alternative()
    {
        return Selection.objects.Length == 1;
    }


    [MenuItem("Hierarchy/Chinar/打开预设", false, 0)]
    static void 打开预设()
    {
        if (Selection.activeGameObject) AssetDatabase.OpenAsset(Resources.Load("Prefab/ModelPrefabs/" + Selection.activeGameObject.name));
    }


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


    static void OnHierarchyGUI(int instanceID, Rect selectionRect)
    {
        if (Event.current != null && selectionRect.Contains(Event.current.mousePosition) && Event.current.button == 1 && Event.current.type <= EventType.MouseUp)
        {
            GameObject selectedGameObject = EditorUtility.InstanceIDToObject(instanceID) as GameObject;
            //这里写 弹出新右键菜单的条件
            //为了便于理解,这里我做的是 名字包含"Cube"且选择对象数量为 1 
            if (selectedGameObject != null && selectedGameObject.name.Contains("Cube") && 打开预设Alternative())
            {
                Vector2 mousePosition = Event.current.mousePosition;
                EditorUtility.DisplayPopupMenu(new Rect(mousePosition.x, mousePosition.y, 0, 0), "Hierarchy/Chinar", null);
                Event.current.Use();
            }
        }
        }
    }
}

支持

May Be —— 开发者,总有一天要做的事!


拥有自己的服务器,无需再找攻略

Chinar 提供一站式《零》基础教程

使有限时间 具备无限可能!

先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


Chinar 免费服务器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: [email protected]

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章