Unity编辑器扩展
只做记录,以后方便查阅
[MenuItem("路径")]
使当前静态方法在菜单栏显示 无视访问权限
第二个参数 没有选择对象时 是否进行进行操作
验证方法:
[MenuItem("GameObject/Test1", true, 13)]
public static bool Test1Validate(MenuCommand cmd)
{
return true;
}
[MenuItem("GameObject/Test1", false, 13)]
public static void Test1()
{
Debug.Log("Test1");
}
第三个参数 每一个菜单栏的priority优先级默认1000(每个分级相差11以上会出现分割线)
//创建弹窗
public class EnemyChange : ScriptableWizard
{
[MenuItem("Create/EnemyChangeWizard")]
public static void CreateWizard()
{
ScriptableWizard.DisplayWizard<EnemyChange>("修改地图加载路径","Change");
}
public string path = "";
public int time = 10;
//检测Create按钮点击
public void OnWizardCreate()
{
foreach (var item in Selection.gameObjects)
{
Enemy enemy = item.GetComponent<Enemy>();
Undo.RecordObject(enemy, "Change Enemy");
enemy.path += path;
enemy.time += time;
}
}
//字段值改变会调用 打开默认调用一次
public void OnWizardUpdate()
{
helpString;//帮助提示字段
errorString//警告提示字段
}
}
ShowNotification(new GUIContent("透明的提示信息"));
能在弹窗里面显示提示信息
[ContextMenu"操作名字"]
使当前组件的方法能在组件的右键选项里面使用
[ContextMenu(“方法名”,“操作名字”)]
能在inspector面板调用 方法
CONTEXT
开头的路径为组件的菜单栏
方法参数( MenuCommand cmd)MenuCommand 是当前正在操作的组件
属性 context 可以转换成当前选择的组件 usename
路径后面加 空格_快捷键 %ctrl #shift &alt
当需要给菜单栏方法添加快捷键
Selection
获取选择的物体
activeGameObject 返回 第一个选择的物体(inspector)
activeObject 返回 第一个选择的物体(包含预制体)
Undo
删除操作前面加,可以撤销
Undo.RecordObject 记录当前操作
Undo.RegisterCreatedObjectUndo 记录代码创建物体到操作记录里
EditorPrefs
保存编辑器的一些记录和PlayerPrefs类似
EditorUtility.DisplayProgressBar
显示进度条
EditorUtility.DisplayCancelableProgressBar
显示进度条有按钮
EditorUtility.ClearProgressBar
清除进度条显示
创建一个长期使用的窗口类
public class MyWindow : EditorWindow
{
public static MyWindow window;
[MenuItem("Window/show myWindow")]
static void ShowMyWindow()
{
window = EditorWindow.GetWindow<MyWindow>();
window.Show();//显示窗口
}
private string inputValue = "";
private void OnGUI()
{
GUILayout.Label("MyWindow");
inputValue = GUILayout.TextField(inputValue);
if (GUILayout.Button("CreateCube"))
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.name = inputValue;
}
if (GUILayout.Button("CreateAndClose"))
{
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.name = inputValue;
window.Close();
}
}
}
浙公网安备 33010602011771号