Unity Hierarchy面板 添加菜单选项

No.1 给个官方参考链接MenuItem。

No.2 编写如下代码。

    [MenuItem("GameObject/Dosomething", false, 11)]
    static void DoSomething()
    {
        //dosomething
    }

No.3 得到当前选择的对象

    [MenuItem("GameObject/Dosomething", false, 11)]
    static void DoSomething()
    {
        Transform []transforms = Selection.GetTransforms (SelectionMode.Assets);
        Debug.Log (transforms.Length);
    }

No.4 操作选择对象注意事项

Undo操作

  • Undo.RecordObject(s)记录Object的状态
  • Undo.AddComponent 要添加Component的时候使用,可以撤销掉新加的Component
  • Undo.RegisterCreatedObjectUndo 新建Object的时候使用,可以撤销新建的物体
  • Undo.DestroyObjectImmediate 要删除Object的时候使用,可以撤销删除操作
  • Undo.SetTransformParent 修改Transform的Parent的时候使用,可以恢复层次结构
    [MenuItem("GameObject/Dosomething", false, 11)]
    static void DoSomething()
    {
        Transform []transforms = Selection.GetTransforms (SelectionMode.Assets);

        GameObject tg;

        if ((tg = GameObject.Find ("EditorParents")) == null) {
            tg = new GameObject ("EditorParents");
            Undo.RegisterCreatedObjectUndo (tg, "clone a tg");
        }

        for (int i = 0; i < transforms.Length; i++) {
            Undo.SetTransformParent (transforms [i], tg.transform, "Trans");
        }
    }

你可能感兴趣的:(Unity Hierarchy面板 添加菜单选项)