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


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

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

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

    请注意将 "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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    以上代码会返回一个 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);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

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

    请注意:

    1. 你需要确保目标路径是可写入的。
    2. 如果运行环境没有写权限或者磁盘空间不足,则可能无法成功保存图像。
    3. 这段代码应该只在Editor模式下使用,因为它直接操作了磁盘文件。如果想要在运行时动态地保存和加载图像,请考虑使用其他方法如Application.persistentDataPath等。
  • 相关阅读:
    SparkSQL项目实战
    【校招VIP】排序算法之高级排序
    CMS知识小结及wordpress的安装与漏洞复现
    华清远见嵌入式学习——驱动开发——day9
    python---协程与任务详解
    内部类杂记
    JVM的原理与性能
    PLC梯形图实操——风扇正反转
    东方甄选难扛大旗,新东方在线何时走出“双减”重创?
    安全加速SCDN在网站运营中的重要作用
  • 原文地址:https://blog.csdn.net/hhh314159/article/details/133862341