简介
介绍部分自定义编辑器信息;
创建一个对话框界面,当在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");
}
快捷键
符号 | Windows | macOS |
---|---|---|
% | ctrl | cmd |
# | shift | shift |
& | alt | alt |
_ | 单一按键 | 如:_a表示按下a键 |
# | shift+a | |
% | Ctrl+a | CMD+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