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);
            //把图片资源添加到dic
            Dictionary<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 资源管理中一个非常有用的工具,它提供了一种简单直接的方式来动态加载和管理项目中的资源。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

国内外网络安全政策动态(2024年11月)

▶︎ 1.13项网络安全国家标准自11月1日起实施 11月1日起&#xff0c;《网络安全技术 信息技术安全评估准则》等13项网络安全国家标准开始实施&#xff0c;其中&#xff0c;《网络安全技术 信息技术安全评估准则 第1-5部分》《网络安全技术 信息技术安全评估方法》等6项推荐性国…

Modbus Poll的使用

最近从串口调试助手接触到了Modbus Poll&#xff0c;一开始用的时候有些生疏&#xff0c;了解之后不得不说真香。 相对于串口调试助手&#xff0c;有些设备厂家会给一些点表和指令码&#xff0c;有些也可以通过modbus协议解析出来&#xff0c;相对来说&#xff0c;使用Modbus …

写NFC标签支持Android安卓Ohos纯血鸿蒙唤醒微信小程序

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b8bEEGz&ftt&id61539185785 Python languagecodestr "en".encode(gbk) titlestrself.lineEdit_title.text().strip().encode(gbk) uriheaderindex sel…

利用oracle spool配置数据导出脚本

一&#xff0c;spool配置项 set colsep |   //域输出分隔符 set echo off   //显示start启动的脚本中的每个sql命令&#xff0c;缺省为on set feedback off //回显本次sql命令处理的记录条数&#xff0c;缺省为on set heading off  //输出域标题&#xff0c;缺省为on…

单端和差分信号的接线法

内容来源&#xff1a;【单端信号 差分信号与数据采集卡的【RSE】【 NRES】【 DIFF】 模式的连接】 此篇文章仅作笔记分享。 单端输入 单端信号指的是输入信号由一个参考端和一个信号端构成&#xff0c;参考端一般是地端&#xff0c;信号就是通过计算信号端口和地端的差值所得…

前端基础——CSS

美化文档 HTML内部添加样式 本节我们来学习如何在标签中引入CSS样式。 1 在标签中添加声明 声明的关键字是style后接等号&#xff08;&#xff09;再接引号&#xff08;""&#xff09;&#xff0c;即style"" 具体声明如下&#xff1a; <input typ…

MATLAB 最小二乘点云拟合球 (89)

MATLAB 最小二乘点云拟合球 (89) 一、算法介绍二、算法实现1.代码2.结果这是缘,亦是最美的相见 一、算法介绍 球面拟合算法是一种通过数学方法将一组三维点(通常在三维空间中分布)拟合到一个理想的球形表面上。这个过程通常涉及使用最小二乘法来最小化实际数据点与拟合的…

安防视频监控平台Liveweb视频汇聚管理系统管理方案

智慧安防监控Liveweb视频管理平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。国标GB28181协议视频监控/视频汇聚Liveweb平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、…

elasticsearch-如何给文档新增/更新的字段

文章目录 前言elasticsearch-如何给文档新增/更新的字段1. 如何给某些文档新增/更新的字段2. 给所有文档添加/更新一个新的字段3. 测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且…

浅谈网络 | 应用层之流媒体与P2P协议

目录 流媒体名词系列视频的本质视频压缩编码过程如何在直播中看到帅哥美女&#xff1f;RTMP 协议 P2PP2P 文件下载种子文件 (.torrent)去中心化网络&#xff08;DHT&#xff09;哈希值与 DHT 网络DHT 网络是如何查找 流媒体 直播系统组成与协议 近几年直播比较火&#xff0c;…

性能测试基础知识jmeter使用

博客主页&#xff1a;花果山~程序猿-CSDN博客 文章分栏&#xff1a;测试_花果山~程序猿的博客-CSDN博客 关注我一起学习&#xff0c;一起进步&#xff0c;一起探索编程的无限可能吧&#xff01;让我们一起努力&#xff0c;一起成长&#xff01; 目录 性能指标 1. 并发数 (Con…

【机器学习】机器学习的基本分类-监督学习-决策树-ID3 算法

ID3&#xff08;Iterative Dichotomiser 3&#xff09;是决策树的一种构造算法&#xff0c;由 Ross Quinlan 在 1986 年提出。它主要用于分类问题&#xff0c;通过信息增益选择特征来构建决策树。ID3 假设数据是离散型特征&#xff0c;且不支持连续型数据。 1. 核心思想 划分标…

记录:ubuntu 使用chattts的过程。

你知道什么是穷人吗&#xff1f;穷人就是没钱还想学习。 git GitHub - 2noise/ChatTTS: A generative speech model for daily dialogue. 因为所以。cosyvoice&#xff0c;gpt-s . 0.先找一个目录吧。 1.命令行模式 duyichengduyicheng-computer:~/gitee$ git clone https:…

LabVIEW氢同位素单质气体定量分装系统

氢同位素单质气体在多个行业中有重要应用&#xff0c;如能源和化工。传统的分装方法面临精度和自动化程度不足的问题。为此&#xff0c;开发了一套基于LabVIEW和质量流量控制器的定量分装系统&#xff0c;提高分装精度和效率&#xff0c;同时减少资源浪费和环境污染。 项目背景…

分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测

分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测 目录 分类预测 | PSO-PNN粒子群优化概率神经网络多特征分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现PSO-PNN粒子群优化概率神经网络多特征分类预测&#xff0c;运行环境Matlab2018b及以…

鸿蒙开发-Divider 组件

在 ArkTS 中&#xff0c;Divider组件是用于在界面上显示分割线的组件&#xff0c;以下是其详细介绍&#xff1a; 基本功能 Divider组件主要用于将页面中的不同部分进行视觉上的分隔&#xff0c;使页面布局更加清晰和有条理&#xff0c;增强用户界面的可读性和美观性。 常用属…

SpringBoot实战——个人博客项目

目录 一、项目简介 ?二、项目整体架构 数据库模块 后端模块 前端模块 ?三、项目具体展示 ?四、项目的具体实现 1、一些准备工作 ??数据库、数据表的创建 ??设置数据库和MyBatis的配置 ??将前端项目引入到当前项目中 2、登录注册模块 ??实体类的创建 ?…

利用sda剩余空间,扩容(lvm)

r如果余空间没有使用&#xff0c;直接扩容 pvdisplay vgdisplay pvresize /dev/sda3 扩展逻辑卷的大小&#xff1a; lvextend -l 100%FREE /dev/mapper/openeuler-root 对于ext4文件系统&#xff1a; resize2fs /dev/mapper/vg_openeuler-openeuler--root 对于xfs文件系…

【Golang】Go语言编程思想(一):接口

接口 接口的概念 现在我们要实现一个函数&#xff0c;用于对给定的 url 进行解析&#xff0c;具体的代码实现如下&#xff1a; package mainimport ("fmt""io""net/http" )func retrieve(url string) string {resp, err : http.Get(url)if er…

智能文档解析综述:结构化信息提取的技术、挑战与前景

综述论文&#xff1a;https://arxiv.org/abs/2410.21169 摘要 文档解析对于将非结构化和半结构化文档&#xff08;如合同、学术论文和发票&#xff09;转换为结构化、机器可读的数据至关重要。通过从非结构化输入中提取可靠的结构化数据&#xff0c;文档解析为众多应用提供了极…