定制Unity编辑器

简介

介绍部分自定义编辑器信息;
创建一个对话框界面,当在hierarchy选中多个对象时,可以对对象进行批量重命名。

Editor文件夹

Editor文件夹作为一个特殊的文件夹被Unity识别,其中包含了全部编辑器定制脚本,Editor定制脚本需要放在该目录下。

ScriptableWizard

ScriptableWizard类继承自EditorWindow类,在继承自ScriptableWizard的类中可以自定义窗口中的内容。
在该类中写的public字段可以直接显示在窗口中。

MenuItem

MenuItem可以创建菜单项。

//在Edit目录下创建一个BatchRename菜单项
[MenuItem("Edit/BatchRename")]
private static void CreateWizard()
{
	//显示器向导    窗口名		 所管控的类				按钮名
	DisplayWizard("BatchRename", typeof(BatchRename), "Rename");
}
//或者
[MenuItem("Edit/BatchRename")]
private static void CreateWizard()
{
	//显示器向导    窗口名		 所管控的类	   按钮名1	 按钮名2
	DisplayWizard<BatchRename>("BatchRename", "Cancel", "Rename");
}

快捷键

符号WindowsmacOS
%ctrlcmd
#shiftshift
&altalt
_单一按键如:_a表示按下a键
#shift+a
%Ctrl+aCMD+a
&Alt+a
单个按键LEFT,DOWN,F1等

添加快捷键:

[MenuItem("Edit/BatchRename _a")]

触发条件

OnWizardUpdate


/// <summary>
/// 当窗口中的数据更新时
/// </summary>
private void OnWizardUpdate()
{
    Debug.Log("当窗口中的数据更新时");
}

OnSelectionChange

/// <summary>
/// 当选择的物体改变时
/// </summary>
private void OnSelectionChange()
{
     Debug.Log("当选择的物体改变时");
}

/// <summary>
/// 按下其他按钮时
/// </summary>
private void OnWizardOtherButton()
{
	Debug.Log("当选择的物体改变时");
}

提示

修改ScriptableWizard中的helpString与errorString的值即可。

批量重命名

Selection.objects可以获取选中的对象。


using UnityEditor;

public class BatchRename : ScriptableWizard
{
    // Base name
    public string BaseName = "MyObject";

    // Start Count
    public int StartNumber = 0;

    // Increment
    public int Increment = 1;

    [MenuItem("Edit/Batch Rename _a")]
    private static void CreateWizard()
    {
        ScriptableWizard.DisplayWizard("BatchRename", typeof(BatchRename), "Rename");
    }

    private void OnEnable()
    {
        UpdateSelectionHelper();
    }

    private void OnSelectionChange()
    {
        UpdateSelectionHelper();
    }

    private void UpdateSelectionHelper()
    {
        helpString = "";

        if (Selection.objects != null)
            helpString = "Number of objects selected: " + Selection.objects.Length;
    }

    private void OnWizardCreate()
    {
        if (Selection.objects == null)
            return;

        int PostFix = StartNumber;

        foreach (var obj in Selection.objects)
        {
            obj.name = BaseName + PostFix;
            PostFix += Increment;
        }
    }
}

  • 菜单项可以设置优先级
  • 菜单项可以设置是否有效
  • OnWizardCreate
  • OnEnable
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值