Unity编辑器扩展-第七集-应用键/显示提示词

第六集链接:Unity编辑器扩展-第六集-创建窗口/批量填图_菌菌巧乐兹的博客-CSDN博客

一、本节目标+效果展示 

1.我们有时候需要多次使用编辑窗口,但是每次一点执行,就关掉了,就很烦,所以我们希望,点击按钮,执行了操作,但不关闭

2.我们可能需要提示词,做错了的提示词,完成了的提示词

二、做一个应用按钮

回忆:

    [MenuItem("基础扩展/批量赋值图片")]
    static void Rename_SpriteName()
    {
                                                            //1.对话框名称 2.创建按钮 
        ScriptableWizard.DisplayWizard<SetName_SpriteName>("统一创建按钮", "赋值图片" );
    }

这个方法还可以有所改进:

   [MenuItem("基础扩展/批量赋值图片")]
    static void Rename_SpriteName()
    {
                                                         //1.对话框名称 2.创建按钮 3.应用按钮
        ScriptableWizard.DisplayWizard<SetName_SpriteName>("统一创建按钮", "确定", "赋值图片" );
    }

备注:三个文字的顺序是1.对话框名称 2.创建按钮 3.应用按钮

第二个里面我改了一下创建按钮和应用按钮的名字

应用按钮

应用按钮的使用方法为:

void OnWizardOtherButton()

我们把之前在创建按钮里的方法,搬到应用按钮里

//把图片和图片的名称赋值给物体
public class SetName_SpriteName : ScriptableWizard
{
    public List<GameObject> oldList = new List<GameObject>();
    public List<Sprite> spriteList = new List<Sprite>();

    private void OnWizardOtherButton()
    {
            for (int i = 0; i < oldList.Count; i++)
            {
                Undo.RecordObject(oldList[i], "赋值图片,改名称");
                oldList[i].name = spriteList[i].name;
                oldList[i].GetComponent<Image>().sprite = spriteList[i];
            }
    }
}

你会发现,和之前一样,然后对话框现在不关了,那关于创建按钮之前的方法,空着就行了,不要紧。

三、提示词

提示词有个两个别人写好的,直接用的参数:errorString、helpString

errorString长成

 helpString长成

使用方法也很简单,直接赋值就可以用

helpString = "已改完,请确认";

另一个一样。

四、案例

我们希望:

备注,如果$这里看不懂,可以去瞅一眼,很简单

unity | 处理string常用的知识(持续更新)_unity转义字符_菌菌巧乐兹的博客-CSDN博客

1.没有物体,提示要补充物体

        if (oldList.Count == 0)
        {
            errorString = $"物体有{oldList.Count}个,请补充";
        }

 2.如果有物体了,没有图片,提示补充图片

        else if (spriteList.Count == 0)
        {
            errorString = $"图片有{spriteList.Count}个,请补充";
        }

3.如果都有了,但是个数不一样,提示个数不一样

        else if (oldList.Count != spriteList.Count)
        {
            errorString = $"物体有{oldList.Count}个,图片有{spriteList.Count}个,数目不同,请修改";
        }

4.如果以上都对了,就执行代码,并且显示已经执行了

        else
        {
            for (int i = 0; i < oldList.Count; i++)
            {
                Undo.RecordObject(oldList[i], "赋值图片,改名称");
                oldList[i].name = spriteList[i].name;
                oldList[i].GetComponent<Image>().sprite = spriteList[i];
            }
            //清空错误提示
            errorString = "";
            //提示已经完成
            helpString = "已改完,请确认";
        }

五、全部代码

using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;

//把图片和图片的名称赋值给物体
public class SetName_SpriteName : ScriptableWizard
{
    public List<GameObject> oldList = new List<GameObject>();
    public List<Sprite> spriteList = new List<Sprite>();

    private void OnWizardOtherButton()
    {

        if (oldList.Count == 0)
        {
            errorString = $"物体有{oldList.Count}个,请补充";
        }
        else if (spriteList.Count == 0)
        {
            errorString = $"图片有{spriteList.Count}个,请补充";
        }
        else if (oldList.Count != spriteList.Count)
        {
            errorString = $"物体有{oldList.Count}个,图片有{spriteList.Count}个,数目不同,请修改";
        }
        else
        {
            for (int i = 0; i < oldList.Count; i++)
            {
                Undo.RecordObject(oldList[i], "赋值图片,改名称");
                oldList[i].name = spriteList[i].name;
                oldList[i].GetComponent<Image>().sprite = spriteList[i];
            }

            errorString = "";
            helpString = "已改完,请确认";
        }
    }
}
public class Editor_Base
{
    [MenuItem("基础扩展/批量赋值图片")]
    static void Rename_SpriteName()
    {
        ScriptableWizard.DisplayWizard<SetName_SpriteName>("统一创建按钮", "确定", "赋值图片" );
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_49427945/article/details/131350468