Unity Editor Script 创建对话框

这是一个Unity的ScriptableWizard脚本,用于在编辑器中批量修改选中游戏对象上的PlayerHealth组件的初始生命值。用户可以设置要增加的生命值,并通过进度条显示修改进度。在创建或点击其他按钮时,脚本会更新所有选定对象的属性,同时提供错误检查和提示信息。
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();
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值