using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
public class EnemyChange : ScriptableWizard
{
[MenuItem("Tools/CreateWizard")]
static void CreateWizard()
{
ScriptableWizard.DisplayWizard<EnemyChange>("统一修改敌人", "Create","Other");
}
public int changeHealthValue = 10;
const string changeHealthValueKey = "EnemyChange.changeHealthValue";
//窗口创建时调用
private void OnEnable()
{
changeHealthValue = EditorPrefs.GetInt(changeHealthValueKey);
}
//检测 Create 按钮点击,点击并关闭对话框
void OnWizardCreate()
{
GameObject[] enemyPrefabs = Selection.gameObjects;
//添加进度条
EditorUtility.DisplayProgressBar("进度", "0/" + enemyPrefabs.Length + "完成修改值",0);
int count = 0;
foreach (GameObject item in enemyPrefabs)
{
PlayerHealth ph = item.GetComponent<PlayerHealth>();
Undo.RecordObject(ph, "changeHp");
ph.startingHealth += changeHealthValue;
count++;
EditorUtility.DisplayProgressBar("进度", count+"/" + enemyPrefabs.Length + "完成修改值", (float)count/enemyPrefabs.Length);
}
//关闭进度条
EditorUtility.ClearProgressBar();
ShowNotification(new GUIContent(Selection.gameObjects.Length + "个游戏物体的值被修改"));
}
//第二个按钮回调,点击不关闭对话框
private void OnWizardOtherButton()
{
OnWizardCreate();
}
//当前字段值修改时回调
void OnWizardUpdate()
{
errorString = "";
helpString = "";
if (Selection.gameObjects.Length > 0)
{
helpString = "选择了" + Selection.gameObjects.Length + "个对象";
}
else
{
errorString = "请选择至少一个对象";
}
//保存字段
EditorPrefs.SetInt(changeHealthValueKey, changeHealthValue);
}
//当选择对象发生改变时回调
private void OnSelectionChange()
{
OnWizardUpdate();
}
}
