欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > unity3d—demo(实现给出图集名字和图片名字生成对应的图片)

unity3d—demo(实现给出图集名字和图片名字生成对应的图片)

2025/2/24 1:01:23 来源:https://blog.csdn.net/2401_82978699/article/details/144299756  浏览:    关键词:unity3d—demo(实现给出图集名字和图片名字生成对应的图片)

目录

实现给出图集名字和图片名字生成对应的图片:

代码示例:

dic: 键 是图集名称   值是一个字典  该字典键是图片名称 值是图片,结构如图:

测试代码:

结果:

SpriteRenderer 讲解:

Resources.LoadAll<> 讲解:

基本用法

返回值

示例

注意事项


实现给出图集名字和图片名字生成对应的图片:

代码示例:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MultipleMgr
{private static MultipleMgr instance = new MultipleMgr();public static MultipleMgr Instance => instance;private MultipleMgr(){ }//存储图集private Dictionary<string, Dictionary<string, Sprite>> dic = new Dictionary<string, Dictionary<string, Sprite>>();/// <summary>/// /// </summary>/// <param name="mulpleName">图集名称</param>/// <param name="spriteName">图片名称</param>/// <returns></returns>public Sprite GetSprite(string mulpleName,string spriteName){//如果已经加载过图集if(dic.ContainsKey(mulpleName)){//找到对应图片if(dic[mulpleName].ContainsKey(spriteName)){return dic[mulpleName][spriteName];}}//第一次加载else{//加载图集资源Sprite[] sprites = Resources.LoadAll<Sprite>(mulpleName);//把图片资源添加到dicDictionary<string, Sprite> dicSprite = new Dictionary<string, Sprite>();for(int i = 0; i < sprites.Length;i++){dicSprite.Add(sprites[i].name, sprites[i]);}dic.Add(mulpleName, dicSprite);//找到图片返回if(dicSprite.ContainsKey(spriteName)){return dicSprite[spriteName];}}return null;}//清理资源public void ClearInfo(){dic.Clear();//卸载资源Resources.UnloadUnusedAssets();}
}
dic: 键 是图集名称   值是一个字典  该字典键是图片名称 值是图片,结构如图:

测试代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Test : MonoBehaviour
{void Start(){GameObject obj = new GameObject();SpriteRenderer sr = obj.AddComponent<SpriteRenderer>();sr.sprite = MultipleMgr.Instance.GetSprite("RobotBoyIdleSprite", "RobotBoyIdleSprite_0");}
}
结果:

SpriteRenderer 讲解:

                                             

SpriteRenderer 是 Unity 中用于渲染 2D 精灵并控制其在场景中视觉效果的一个组件。以下是对 SpriteRenderer 的详细解释:

  1. 用途

    • SpriteRenderer 组件用于渲染精灵(Sprite)并控制其在 2D 和 3D 项目场景中的可视化效果。
  2. 添加组件

    • 创建精灵时(通过 GameObject > 2D Object > Sprite),Unity 会自动创建一个附加了 SpriteRenderer 组件的游戏对象。也可以通过 Components 菜单(Component > Rendering > Sprite Renderer)将该组件添加到现有的游戏对象。
  3. 属性

    • Sprite:定义组件应该渲染的精灵纹理。点击右侧的圆圈图标可以打开对象选择器,从列表中选择对应的精灵资源。
    • Color:定义精灵的顶点颜色,可以对精灵图像进行着色或重新着色。使用颜色选择器来设置渲染精灵纹理的顶点颜色。
    • Flip:沿着勾选的轴翻转精灵纹理,这不会影响游戏对象的 Transform 位置。
    • Material:定义用于渲染精灵纹理的材料。
    • Draw Mode(绘制模式):定义精灵在尺寸变化时的缩放方式。有以下几种选项:
      • Simple:尺寸变化时,整个图像都缩放。这是默认选项。
      • Sliced:如果精灵是 9-slice(9切片),则选择此模式。
      • Size:输入精灵的新宽度和高度来缩放 9-slice 精灵。
      • Tiled:默认情况下,此模式会导致 9-Slice 精灵的中间部分在尺寸变化时平铺而不是缩放。使用 Tile Mode 控制精灵的平铺行为。
      • Continuous:在 Continuous 模式下,中间部分在精灵尺寸变化时均匀平铺。
      • Adaptive:在 Adaptive 模式下,精灵纹理在尺寸变化时拉伸,类似于 Simple 模式。当变化的尺寸达到 Stretch Value 时,中间部分开始平铺。
      • Stretch Value(仅在 Adaptive 模式下可用):使用滑块设置 0 到 1 之间的值。最大值是 1,代表原始精灵尺寸的两倍。
    • Mask Interaction:设置 Sprite Renderer 在与 Sprite Mask 交互时的行为。
    • Sprite Sort Point:当 Sprite Renderer 的 Draw Mode 设置为 Simple 时,此属性可用。在正交投影模式下,Unity 根据精灵到摄像机的距离来渲染精灵的顺序。
  4. 脚本中的使用

    • 可以通过脚本获取 SpriteRenderer 组件,并对其属性进行操作。例如,改变精灵的颜色或翻转精灵。

SpriteRenderer 是 Unity 2D 开发中的核心组件之一,它为开发者提供了丰富的选项来控制精灵的渲染和表现。

 

Resources.LoadAll<> 讲解:

是 Unity 提供的一个泛型方法,它允许开发者从 Unity 项目的 Resources 文件夹中加载指定路径下的所有资源。这个方法对于动态加载多个同类型资源特别有用,比如加载多个精灵(Sprite)、纹理(Texture)、音频剪辑(AudioClip)等。

以下是 Resources.LoadAll<> 方法的一些详细说明:

基本用法

Resources.LoadAll<> 方法的基本语法如下:

Resources.LoadAll<T>(path);
  • T 是你想要加载的资源类型,比如 SpriteTexture2DAudioClip 等。
  • path 是相对于 Resources 文件夹的路径,不包括文件扩展名。

返回值

这个方法返回一个包含所有加载资源的数组。如果指定路径下没有找到任何资源,或者资源类型不匹配,返回的数组将是空的。

示例

假设你有一个包含多个精灵的图集(Texture Atlas),你可以这样加载所有的精灵:

Sprite[] sprites = Resources.LoadAll<Sprite>("path/to/your/sprites");

这里 "path/to/your/sprites" 是你的资源相对于 Resources 文件夹的路径。

注意事项

  1. 性能考虑Resources.LoadAll<> 会将所有匹配的资源一次性加载到内存中,这可能会导致较大的内存消耗,特别是在加载大量资源时。

  2. 资源管理:由于 Resources.LoadAll<> 会加载路径下的所有资源,因此你需要确保路径的准确性,避免不必要的资源被加载。

  3. 资源类型:确保你加载的资源类型与 Resources 文件夹中的资源类型一致。

  4. 路径正确性:路径错误或资源未正确放置在 Resources 文件夹中都会导致加载失败。

  5. 后缀名:调用 Resources.LoadAll<> 时不需要包含文件的后缀名。

  6. 异步加载:如果你需要异步加载资源,可以考虑使用 AssetBundleResources.UnloadAsset 等方法。

  7. 资源清理:由于 Resources.LoadAll<> 加载的资源会被保留在内存中,你需要手动管理这些资源,比如在不再需要时卸载它们。

Resources.LoadAll<> 是 Unity 资源管理中一个非常有用的工具,它提供了一种简单直接的方式来动态加载和管理项目中的资源。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词