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

news2025/1/13 13:47:40

第六集链接: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>("统一创建按钮", "确定", "赋值图片" );
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Bean的实例化过程

一、前言 对于写Java的程序员来说&#xff0c;Spring已经成为了目前最流行的第三方开源框架之一&#xff0c;在我们充分享受Spring IOC容器带来的红利的同时&#xff0c;我们也应该考虑一下Spring这个大工厂是如何将一个个的Bean生产出来的&#xff0c;本期我们就一起来讨论一…

2023年6月GESP能力等级认证Python一级真题

2023-06 GESP等级考Python一级真题 题数&#xff1a;27 分数&#xff1a;100 测试时长&#xff1a;90min 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 1. 以下不属于计算机输出设备的有&#xff08; A&#xff09;。&#xff08;2分&#xff09; A…

几个Arcpy代码应用案例

1 案例一 删除特定记录 使用 arcpy 从 ArcGIS 中的图层中删除特定记录。可以使用更新游标&#xff08;UpdateSursor&#xff09;和 SQL 查询来识别和删除所需的记录。以下是如何删除特定图层记录的示例 import arcpy selectedParcelsselectedParcels expres…

分子碰撞频率和自由程------从一个物理小问题解剖自己的数学思维

物理学12-8节中&#xff0c;关于分子平均碰撞的解说如下&#xff1a; &#xff08;一&#xff09;分子碰撞自由程公式 第一个公式中&#xff0c;lamda v / z中&#xff0c;v的单位是m/s, z的单位是A/s, 其中A是常数。那么lamda描述的结果是m/A, 这正是长度单位。 此公式lamda…

利用正弦定理证明两角和差公式

首先用正弦定理&#xff0c;证明sin(AB)sinAcosBcosAsinB。 另外&#xff0c;其它的两角和差公式&#xff0c;都可以用三角函数奇偶性、诱导公式等推导出来&#xff0c;无需再用正弦定理证明一遍。

耗时一个月!手撸博客系统,主打美观实用!

先附上博客链接RoCBlog 关于博客 关于博客 RoCBlog 完成耗时&#xff1a;20天 起初是想搭建自己的博客&#xff0c;看了网上许多开源框架&#xff0c;感觉没啥意思&#xff0c;于是决定自己写一套 纯手撸VueSpringboot 其实是个我一边学vue一边写出来的东西&#xff0c;前期…

团体程序设计天梯赛-练习集L1篇⑩

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

(贪心) 1221. 分割平衡字符串 ——【Leetcode每日一题】

❓ 1221. 分割平衡字符串 难度&#xff1a;简单 平衡字符串 中&#xff0c;L 和 R 字符的数量是相同的。 给你一个平衡字符串 s&#xff0c;请你将它分割成尽可能多的子字符串&#xff0c;并满足&#xff1a; 每个子字符串都是平衡字符串。 返回可以通过分割得到的平衡字符…

【JAVA反序列化】序列化与反序列化Java反射URLDNS链

文章目录 原生序列化与反序列化概述为什么需要序列化和反序列化&#xff1f;应用场景(涉及到将对象转换成二进制&#xff0c;序列化保证了能够成功读取到保存的对象)涉及的协议好处为什么会产生反序列化漏洞&#xff1f;可能反序列化的形式&#xff1f;代码演示 Java反射基础补…

Java try-catch块

Java的try块用于封装可能会抛出异常的代码。它必须在方法内部使用。 如果在try块中的特定语句处发生异常&#xff0c;后续的代码块将不会执行。因此&#xff0c;建议不要在try块中放置不会抛出异常的代码。 Java的try块必须后跟catch块或finally块。 Java try-catch语法 try…

JDBC ResultSet源码解读

通过Debug方式看下源码&#xff1a; 1.Debug程序&#xff0c;找到返回的 ResultSet 的引用 2. 查看ResultSet中的rowData 3. 查看 rows 我们可以看到rows是一个数组&#xff0c;里面存放了我们查询得到的数据&#xff08;我的表中一共7条数据&#xff09;。 4. 查看rows中的元…

【总结】网页状态码——200、302、304、400、404、405、500

200正常 500异常–服务器异常Java代码 细节&#xff1a;null和空&#xff0c;null调用方法会出现空指针异常 400异常----传参相关的异常 get方法长度限制 400异常&#xff0c;加了RequestParam(value “name”) 必须传值 400异常&#xff0c;后端类型是Integer&#xff0c…

c# 基于微信wechat_qrcode opencv插件,网络二维码图片批量识别(一)

一、基本概念 微信开源了其二维码的解码功能&#xff0c;并贡献给 OpenCV 社区。其开源的 wechat_qrcode 项目被收录到 OpenCV contrib 项目中。从 OpenCV 4.5.2 版本开始&#xff0c;就可以直接使用。 该项目 github 地址&#xff1a; https://github.com/opencv/opencv_contr…

中国电子学会2023年05月份青少年软件编程C++等级考试试卷二级真题(含答案)

一、编程题(共5题&#xff0c;共100分) 1. 数字放大 给定一个整数序列以及放大倍数x&#xff0c;将序列中每个整数放大x倍后输出。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 【输入】 包含三行&#xff1a; 第一行为N&#xff0c;表示整数序列的长度(N ≤ 100)&a…

yandex地图js学习

由于百度地图在国外的某些寻路的场景不太完善&#xff0c;所以试用了一下俄罗斯的开源地图。同google地图一样&#xff0c;规划路线需要申请apikey&#xff0c;但无需绑定信用卡&#xff0c;每天的免费调用次数也非常够用。 yandex maps开发文档 申请apikey 只需要创建账号&…

5.5.4 从IPv4到IPv6过渡——双协议栈

5.5.4 从IPv4到IPv6过渡——双协议栈 与软件版本更新不同&#xff0c;IP协议版本的更新不可能在短时间内完成&#xff0c;只能够采用逐步演进的方法&#xff0c;也就是说在很长一段时间内&#xff0c;必须允许两种协议的网络并存&#xff0c;并且能够确保网络能够互联互通&…

C++11语法杂记(更新中)

文章目录 一. delctype二. default三. delete四. 可变参数模板五. emplace系列六. noexcept七. constexpr 一. delctype delctype和auto类似&#xff0c;也可以自动识别类型 举例如下&#xff1a; 与auto不同的是&#xff0c;auto只能用于定义变量类型&#xff0c;而decltyp…

查看ResultSet中的rowData

之前的dml语句都返回值都是int表示有改动的行数 那么Select可是要展示数据的 SELECT查询的结果 通过这个ResultSet遍历 然后通过next方法来一行行读取数据 类似于迭代器(肯定不是迭代器) 里面还包含获得的数据元素 相当于这个既包含元素&#xff0c;还能迭代自己的元素 具体你…

MySQL——DQL,DCL语言学习

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 前言 本章将会讲解MySQLDQL&#xff0c;DCL语言的学习。 一.DQL DQL 英文全称是 Data …

全志V3S嵌入式驱动开发(五种镜像烧入的方法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 关于v3s的镜像烧入&#xff0c;大约有五种方法。前面陆陆续续已经介绍了三种方法&#xff0c;实际工作中具体使用哪一种&#xff0c;大家可以根据自…