工具向TANotes

🔍TOOL丨批处理2.0:Lighting工具[3] - 工具易用性Tips

by ERIN.Z, 2022-07-05


最后整理一下这次对于Editor的一些笔记~

缩进

EditorGUI.indentLevel++;
EditorGUI.indentLevel--;

indentlevel (不过Button是GUILayout,可能不归EditorGUI管所以不会一起缩进...

Undo

Undo.RecordObject(renderer, "Light Layer Batched Modification");
renderer.renderingLayerMask = (uint) LL_Flags;
PrefabUtility.RecordPrefabInstancePropertyModifications(renderer);

来自mentor的代码~记录脚本的更改并允许用户回退修改。

右键选单

[MenuItem]创建时可以设定priority属性,其中GameObject目录下小于50的项目也会出现在hierarchy的右键菜单中: rightclick 更多菜单排序可以参考:Guide to Extending Unity Editor’s Menus

禁用Menu Item

前面对右键选单的操作有一个小问题,我们写的插件方法一般是对特定物体使用的,但其目录会同步到Create菜单,可能会让其他人产生误解。我们可以通过设置MenuItem的Validate状态来解决这个问题:

        //未选取可操作物体时,禁用菜单功能
        [MenuItem("GameObject/GI-UseLightMaps",true,  priority = 30)]
        [MenuItem("GameObject/GI-UseLightProbes",true, priority = 30)]
        [MenuItem("GameObject/GI-Off", true,priority = 30)]
        static bool GImenuValiadate()
        {
            foreach (var obj in Selection.transforms)
            {
                if (obj.GetComponent<MeshRenderer>()) return true;
            }
            return false;
        }

TreeView

还没看完,下次再说。

by ERIN.Z

2024 © typecho & elise