using UnityEditor;
public class Editor_EnemyChange : ScriptableWizard {
/**
* 1.此脚本继承scriptableWizard
* 2.使用menuItem创建菜单栏,在此方法中使用ScriptableWizard.DisplayWizard方法
* 3.ScriptableWizard.DisplayWizard系统函数的调用,有可两个按钮(createButton,otherButton)
* 4.1 认知系统函数 OnWizardCreate() OnWizardUpdate() OnSelectionChange()-->EditorWindow
* 4.2 认知系统函数 OnWizardOtherButton()
* **/
[MenuItem("EditTools/创建对话框", false, 15)]
public static void CreateWizard()
{//以下为一 //ScriptableWizard.DisplayWizard<Editor_EnemyChange>("统一修改敌人的属性", "右下角的按钮,默认是create_( 可以选 中 prefab 让 enemyHealth 自增值)");
}
//系统默认的函数名 右下角的按钮
void OnWizardCreate()
{
GameObject[] enemyGOS = Selection.gameObjects;
foreach (GameObject item in enemyGOS)
{
CompleteProject.EnemyHealth eH = item.GetComponent<CompleteProject.EnemyHealth>();
Undo.RecordObject(eH, "modify health and speed");//写上此句,使其有记录,可以ctrl+z 撤销修改的值
eH.startingHealth += modifyEnemyHP;
eH.sinkSpeed += modifyEnemySpeed;
}
Debug.LogError(" 可以选 中 prefab 让 enemyHealth 自增值 click 右下角");
}
public int modifyEnemyHP = 10;
public int modifyEnemySpeed = 10;
//系统 函数
void OnWizardUpdate()
{
Debug.LogError("1.当前调用时会输出 2.当修改值时会输出");
if (Selection.gameObjects.Length > 0)
{
helpString = "helpString是ScriptableWizard的定义内容-->选中了"+Selection.gameObjects.Length+"个物体";
errorString = "";
}
else
{
helpString = "";
errorString = "errorString是ScriptableWizard的定义内容-->当前并没有选中物体";
}
}
//系统函数
void OnSelectionChange()
{
OnWizardUpdate();
}
//以上为一
//以下为二,otherButton
[MenuItem("EditTools/创建对话框2,含有OtherButton", false, 15)]
public static void CreateWizardOtherButton()
{
ScriptableWizard.DisplayWizard<Editor_EnemyChange>("修改", "create","otherButton");//注一个脚本不可同时写两个DisplayWizard
}
void OnWizardOtherButton()
{
Debug.LogError("OtherButtons--点击了,并不会自主关闭窗口");
ShowNotification(new GUIContent(Selection.gameObjects.Length + "个被修改了"));
}
}
Editor_ScriptableWizard,ShowNotification 学习04
最新推荐文章于 2024-03-26 20:47:03 发布