当前位置: 首页 > news >正文

动态加载sprite是multiple模式(即该sprite包含了很多小图)里的小图

在Unity中,Resources.Load()方法可以用来加载资源。如果要加载Sprite下的multiple模式的图片,你需要知道这些图片的路径。

首先,你需要把你想要加载的资源放在一个名为"Resources"的文件夹内。然后,你可以使用以下代码来加载多个Sprite:

// 加载一个包含多张Sprite图片的资源
Sprite spriteObj = Resources.Load<Sprite>("YourPath/YourImageName");

请注意将 "YourPath/YourImageName" 替换为实际图像资源路径和名称。

但是如果这个sprite是multiple模式(即该sprite包含了很多小图),那么上述代码就不能满足需求了。因为我们需要得到其中每一张小图。

对于这种情况,我们可以使用 Resources.LoadAll() 方法:

// 加载所有Sprites(注意路径和名称)
Sprite[] sprites = Resources.LoadAll<Sprite>("YourPath/YourImageName");foreach(Sprite s in sprites)
{// 打印出所有sprites名字或者进行其他操作Debug.Log(s.name);
}

以上代码会返回一个 Sprites 数组,其中包含了所指定路径下所有 Sprites 对象。

把小图取出来,存成一张张单图

在Unity中,你可以通过Texture2D的EncodeToPNG()函数将Sprite或Texture2D保存为PNG图片。以下是一个例子:

// 加载所有Sprites(注意路径和名称)
Sprite[] sprites = Resources.LoadAll<Sprite>("YourPath/YourImageName");foreach(Sprite s in sprites)
{// 打印出所有sprites名字或者进行其他操作Debug.Log(s.name);// 创建一个新的Texture2D,其大小与Sprite相同Texture2D tex = new Texture2D((int)s.rect.width, (int)s.rect.height);// 将Sprite的像素信息复制到Texture2D上tex.SetPixels(s.texture.GetPixels((int)s.rect.xMin, (int)s.rect.yMin, (int)s.rect.width, (int)s.rect.height));// 应用更改tex.Apply();// 转换为 .png 格式图片文件数据流 byte[] bytes = tex.EncodeToPNG();// 定义存储路径,这里将图片存储在项目Assets目录下,并以sprite的名称命名。string path = Application.dataPath + "/"+s.name+".png";// 写入文件  System.IO.File.WriteAllBytes(path , bytes);
}

以上代码会遍历sprites数组中的每个sprite,并将每个sprite保存为.png格式的图像文件。

请注意:

  1. 你需要确保目标路径是可写入的。
  2. 如果运行环境没有写权限或者磁盘空间不足,则可能无法成功保存图像。
  3. 这段代码应该只在Editor模式下使用,因为它直接操作了磁盘文件。如果想要在运行时动态地保存和加载图像,请考虑使用其他方法如Application.persistentDataPath等。
http://www.lryc.cn/news/196366.html

相关文章:

  • 大数据 DataX 详细安装教程
  • 微信小程序开发之会议oa(首页搭建)
  • 了解主启动类怎么运行
  • 【LeetCode】31. 下一个排列
  • 支持语音与视频即时通讯项目杂记(一)
  • 文档:htm格式转txt
  • 电子邮件地址注册过程详解
  • 深度学习——卷积神经网络(CNN)基础二
  • R语言进度条:txtProgressBar功能使用方法
  • Maven实战-声明周期和插件
  • ebpf的快速开发工具--libbpf-bootstrap
  • 万界星空科技/生产制造执行MES系统/开源MES/免费MES
  • 螺纹快速接头在卫浴行业中的应用提高产量降低生产成本
  • 通达OA 2016网络智能办公系统 handle.php SQL注入漏洞
  • parameter的各种用法以及localparam的用法
  • 网络社区挖掘-图论部分的基本知识笔记
  • Vue Router - 路由的使用、两种切换方式、两种传参方式、嵌套方式
  • mysql为什么会选错索引,以及优化器是如何选择索引的
  • vue基础知识十七:你知道vue中key的原理吗?说说你对它的理解
  • 攻防演练蓝队|Windows应急响应入侵排查
  • uniapp 小程序实现图片宽度100%、高度自适应的效果
  • 05. NXP官方SDK使用实验
  • Python- JSON使用初探
  • vim的配置文件
  • [python] pytest
  • 【王道代码】【2.2顺序表】d1
  • 【Linux】【创建文件】Linux系统下在命令行中创建文件的方法
  • Pytorch之MobileViT图像分类
  • 03在命令行环境中创建Maven版的Java工程,了解pom.xml文件的结构,了解Java工程的目录结构并编写代码,执行Maven相关的构建命令
  • 论文阅读:CenterFormer: Center-based Transformer for 3D Object Detection