Assets==》Editor==》Tools
public class Tools
{
//每一个菜单栏的Priority优先级默认1000
[MenuItem("Tools/Show Info", false, 13)]
static void ShowInfo()
{
Debug.Log(Selection.activeGameObject.name);
}
//按钮的验证方法,判断下面的方法是否可以执行,方法名后面加Validate
[MenuItem("GameObject/my delete", true, 2)]
static bool MyDeleteValidate()
{
if (Selection.objects.Length > 0)
return true;
else
return false;
}
//数字与数字之前相差11可以分类
[MenuItem("GameObject/my delete", false, 2)]
static void MyDelete()
{
foreach (Object o in Selection.objects)
{
//按下ctrl+z 可以撤销
Undo.DestroyObjectImmediate(o);
}
//需要把删除操作注册到记录里面
}
//快捷键的操作 中间有个空格的间隔+"_"
//%=ctrl #=shift &=alt 操作为: %k
[MenuItem("Tools/Kuaijie _k", false, 1)]
static void KuaiJieKey()
{
Debug.Log("快捷键");
}
[MenuItem("Assets/test4")]
static void Test5()
{
Debug.Log("测试4");
}
}
创建对话框,修改多个敌人的数值
using UnityEditor;
public class EnemyChange : ScriptableWizard
{
//创建对话框
[MenuItem("Tools/CreatWizard")]
static void CreatWizard()
{
//显示对话框,对话框类型,标题
ScriptableWizard.DisplayWizard<EnemyChange>("统一修改敌人", "ChangeAndClose","Change");
}
public int changeHealth = 10;
public int changeSpeed = 1;
void OnEnable()
{
changeHealth = EditorPrefs.GetInt("Health", changeHealth);
changeSpeed = EditorPrefs.GetInt("Speed", changeSpeed);
}
//检测ChangeAndClose按钮的点击,方法名固定
void OnWizardCreate()
{
GameObject[] enemyPrefabs = Selection.gameObjects;
//进度条
EditorUtility.DisplayProgressBar("进度", "0/" + enemyPrefabs.Length + "完成", 0);
int count = 0;
foreach (GameObject go in enemyPrefabs)
{
CompleteProject.EnemyHealth hp = go.GetComponent<CompleteProject.EnemyHealth>();
//记录修改的
Undo.RecordObject(hp, "change heath");
hp.startingHealth += changeHealth;
hp.sinkSpeed += changeSpeed;
count++;
EditorUtility.DisplayProgressBar("进度", count + "/" + enemyPrefabs.Length + "完成", count / (float)enemyPrefabs.Length);
}
EditorUtility.ClearProgressBar();//关闭进度条
ShowNotification(new GUIContent(Selection.gameObjects.Length + "个游戏物体被修改了"));
}
//Change按钮执行的方法
void OnWizardOtherButton()
{
OnWizardCreate();
}
//字段的值发生修改调用
void OnWizardUpdate()
{
errorString = null;
helpString = null;
if (Selection.gameObjects.Length > 0)
{
helpString = "您当前选择了" + Selection.gameObjects.Length + "个";
}
else
{
errorString = "请选择至少一个敌人";
}
EditorPrefs.SetInt("Health", changeHealth);
EditorPrefs.SetInt("Speed", changeSpeed);
}
//选择的物体发生改变调用
void OnSelectionChange()
{
OnWizardUpdate();
}
}
创建窗体
using UnityEditor;
public class MyWindow : EditorWindow
{
[MenuItem("Window/Show mywindow")]
static void ShowMyWindow()
{
MyWindow window = EditorWindow.GetWindow<MyWindow>();
window.Show();
}
private string name = "";
void OnGUI()
{
GUILayout.Label("我的窗口");
name = GUILayout.TextField(name);
if (GUILayout.Button("创建"))
{
GameObject go = new GameObject(name);
//记录
Undo.RegisterCreatedObjectUndo(go, "Creat gameobject");
}
}
}