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

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

相关文章:

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

目录 实现给出图集名字和图片名字生成对应的图片&#xff1a; 代码示例&#xff1a; dic: 键 是图集名称 值是一个字典 该字典键是图片名称 值是图片&#xff0c;结构如图&#xff1a; 测试代码&#xff1a; 结果&#xff1a; SpriteRenderer 讲解&#xff1a; Resour…...

烟草行业通过Profinet转EthernetIP网关打通数据壁垒

在工业自动化领域&#xff0c;Profinet转Ethernet/IP是两种广泛应用的工业以太网协议。它们各自具有独特的特点和优势&#xff0c;而在实际应用中&#xff0c;经常需要实现这两种协议之间的互通&#xff0c;这时就需要使用到开疆智能Profinet转Ethernet/IP网关KJ-EIP-108。同时…...

2020年国赛高教杯数学建模E题校园供水系统智能管理解题全过程文档及程序

2020年国赛高教杯数学建模 E题 校园供水系统智能管理 原题再现 校园供水系统是校园公用设施的重要组成部分&#xff0c;学校为了保障校园供水系统的正常运行需要投入大量的人力、物力和财力。随着科学技术的发展&#xff0c;校园内已经普遍使用了智能水表&#xff0c;从而可以…...

ip地址显示本地局域网什么意思?ip地址冲突怎么解决

在日常使用网络的过程中&#xff0c;我们可能会遇到IP地址显示“本地局域网”的情况&#xff0c;同时&#xff0c;局域网内IP地址冲突也是一个常见且令人头疼的问题。本文将首先解释IP地址显示本地局域网的含义&#xff0c;随后详细探讨局域网IP地址冲突的解决方法&#xff0c;…...

[软件工程]八.软件演化

8.1什么是软件演化 由于种种不可避免的原因&#xff0c;系统开发完成后的软件需要进行修改来适应变更的需求&#xff0c;我们对软件的修改就叫软件演化。 8.2为什么软件会演化 由于业务的变更或者为了满足用户期待的改变&#xff0c;使得对已有的系统的新需求浮现出来。由于…...

【大数据学习 | 面经】yarn的资源申请和分配的单位-Container

在yarn中&#xff0c;资源的申请和分配是以container为单位进行的&#xff0c;而不是直接以application和task为单位。 每个提交到yarn上的应用程序&#xff08;application&#xff09;都有一个对应的ApplicationMaster&#xff08;AM&#xff09;。这个AM负责与ResourceMana…...

WiFi受限不再愁,电脑无网络快速修复指南

有时在试图连接WiFi时&#xff0c;会发现网络连接受限&#xff0c;或无法正常访问互联网。这种情况不仅影响了工作效率&#xff0c;还可能错过重要的信息。那么&#xff0c;究竟是什么原因导致了电脑WiFi连接受限呢&#xff1f;又该如何解决这一问题呢&#xff1f;小A今天就来教…...

【组件封装】uniapp vue3 封装一个完整的Tabs(标签页)组件教程,功能由简到杂实现讲解。

文章目录 前言一、简单版Tabs代码实现&#xff1a; 二、下划线带动画的TabsAPI回顾&#xff1a;代码实现&#xff1a; 三、内容区域滑动切换切换动画代码实现&#xff1a;&#xff08;2&#xff09;禁用手势滑动切换&#xff08;3&#xff09;内容区域换为插槽 四、标签栏可滚动…...

TDesign:Picker 选择器

Picker 选择器 API文档地址 单列选择器用法 /// view onTap:(){TDPicker.showMultiPicker(context,data: [controller.coinList],title: ,rightTextStyle: TextStyle(color: AppColors.ColorMain),onConfirm: (selected) {controller.onTapCoin(selected);Navigator.of(contex…...

【AI赋能心理学论文创作策略】第十二章 AI辅助临床启示撰写指南

AI赋能心理学论文创作策略-系列文章目录 第十二章 AI辅助临床启示撰写指南 文章目录 AI赋能心理学论文创作策略-系列文章目录第十二章 AI辅助临床启示撰写指南 前言基础分析框架第一阶段&#xff1a;核心要素分析第二阶段&#xff1a;应用场景展开 关键环节提示第三阶段&#x…...

Pynsist 打包应用 和 PyWebIO 构建Web 应用

Pynsist&#xff1a;一键打包Python 应用代码为Windows 安装程序。 项目地址&#xff1a; https://github.com/takluyver/pynsist PyWebIO&#xff1a;为Python 开发者提供了一种快速、简洁的方式来创建Web 应用&#xff0c;无需学习前端技术 项目地址&#xff1a;https://g…...

git 使用配置

新拿到机器想配置git 获取代码权限&#xff0c;需要的配置方法 1. git 配置用户名和邮箱 git config --global user.name xxxgit config --global user.email xxemail.com 2. 生成ssh key ssh-keygen -t rsa -C "xxemail.com" 3. 获取ssh key cat ~/.ssh/id_rsa.…...

记一次Mysql的SELECT command denied to user...报错(非权限问题)

java.sql.SQLSyntaxErrorException: SELECT command denied to user ‘user_name’‘1.1.1.1’ for table ‘table_name’。错误信息的字面意思是&#xff1a;表“table_name”拒绝用户“user_name”“1.1.1.1”的SELECT命令 。 比较多的情况是&#xff1a;用户没有查看user表…...

element-plus的el-tree的双向绑定

el-tree改造了下 可选可取消 有默认值 不包含父级id 默认展开 点击节点也可触发选择 节点内容自定义 <template>{{ childKeys }}<!--default-checked-keys:默认展开值&#xff08;正常来说需要包含父级id的 但是我们后端不要后端id &#xff09;show-checkbox&#x…...

代码随想录-算法训练营day41(动态规划04:01背包,01背包滚动数组,分割等和子集)

第九章 动态规划part04● 01背包问题&#xff0c;你该了解这些&#xff01; ● 01背包问题&#xff0c;你该了解这些&#xff01; 滚动数组 ● 416. 分割等和子集 正式开始背包问题&#xff0c;背包问题还是挺难的&#xff0c;虽然大家可能看了很多背包问题模板代码&#xf…...

c#中context.SaveChanges()方法

跟踪实体的状态&#xff1a; Entity Framework 使用 Change Tracker 来跟踪上下文中所有实体的状态。实体的状态可以是&#xff1a; Added&#xff1a;新添加的实体&#xff08;即将插入到数据库中&#xff09;。Modified&#xff1a;已修改的实体&#xff08;即将更新数据库中…...

李飞飞首个“空间智能”模型发布:一张图,生成一个3D世界 | LeetTalk Daily

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 在人工智能技术迅速发展的背景下&#xff0c;李飞飞创立的世界实验室于近期发布了首个“空间智能”模型&#xff0c;这一创新成果引发了3D生…...

Node.js简单接口实现教程

Node.js简单接口实现教程 1. 准备工作 确保您的计算机已安装&#xff1a; Node.js (建议版本16.x以上)npm (Node包管理器) 2. 项目初始化 # 创建项目目录 mkdir nodejs-api-tutorial cd nodejs-api-tutorial# 初始化npm项目 npm init -y# 安装必要依赖 npm install expres…...

AIGC 012-Video LDM-更进一步,SD作者将LDM扩展到视频生成任务!

AIGC 012-Video LDM-Stable Video diffusion前身&#xff0c;将LDM扩展到视频生成任务&#xff01; 文章目录 0 论文工作1论文方法实验结果 0 论文工作 Video LDM作者也是Stable diffusion的作者&#xff0c;作者在SD的架构上进行扩展&#xff0c;实现了视频的生成。后续在Vid…...

windows文件下换行, linux上不换行 解决CR换行符替换为LF notepad++

html文件是用回车换行的&#xff0c;在windows电脑上&#xff0c;显示正常。 文件上传到linux服务器后&#xff0c;文件不换行了。只有一行。而且相关js插件也没法正常运行。 用notepad查看&#xff0c;显示尾部换行符&#xff0c;是CR&#xff0c;这就是原因。CR是不被识别的。…...

ESP32S3驱动1.3寸圆形AMOLED屏(RM67162芯片)的完整避坑指南:从SPI配置到LVGL局部刷新修复

ESP32S3驱动1.3寸圆形AMOLED屏&#xff08;RM67162芯片&#xff09;全流程实战&#xff1a;从SPI配置到LVGL优化 这块1.3寸圆形AMOLED屏幕以其出色的显示效果和独特的外形设计&#xff0c;在智能穿戴设备和小型嵌入式项目中越来越受欢迎。然而&#xff0c;当它与ESP32S3开发板结…...

4 款主流论文降 AI 软件实测对比!谁能 5 分钟把 AI 率降到 10% 以下

4 款主流论文降 AI 软件实测对比&#xff01;谁能 5 分钟把 AI 率降到 10% 以下 毕业季最焦虑的事——答辩前剩 3 天、AI 率还有 70%、想找一款 5 分钟就能搞定的工具。 市面上很多工具宣称"几分钟出结果"——但实测下来快的快、慢的慢、效果差距更大。这篇文章实测对…...

Analog Discovery 2:口袋实验室如何用FPGA重塑硬件调试体验

1. 口袋里的实验室&#xff1a;为什么我们需要Analog Discovery 2&#xff1f;作为一名在硬件开发一线摸爬滚打了十多年的工程师&#xff0c;我太熟悉那种面对复杂项目时&#xff0c;被实验室设备“卡脖子”的窘迫感了。你想验证一个想法&#xff0c;或者排查一个棘手的信号问题…...

TVA智能体范式的工业视觉革命(4)

重磅预告&#xff1a;本专栏将独家连载系列丛书《智能体视觉技术与应用》部分精华内容&#xff0c;该书是世界首套系统阐述“因式智能体”视觉理论与实践的专著&#xff0c;特邀美国 TypeOne 公司首席科学家、斯坦福大学博士 Bohan 担任技术顾问。Bohan先生师从美国三院院士、“…...

Ti AWR2243实测:毫米波雷达通道积累,选相干还是非相干?一个实验讲清楚

Ti AWR2243毫米波雷达通道积累策略&#xff1a;工程实践中的深度抉择 毫米波雷达在现代自动驾驶系统中扮演着关键角色&#xff0c;而通道积累策略的选择直接影响着目标检测的精度与系统实时性。面对192个虚拟通道的海量数据&#xff0c;工程师们常常陷入两难&#xff1a;是追求…...

边缘云环境下数据流模型FlowUnits的设计与实践

1. 数据流模型的演进与边缘云挑战数据流计算作为分布式系统领域的核心范式&#xff0c;已经深刻改变了我们处理海量数据的方式。这种基于有向无环图&#xff08;DAG&#xff09;的计算模型&#xff0c;通过将数据处理逻辑分解为独立的算子&#xff08;operator&#xff09;并明…...

从零上手RP2040:为树莓派Pico注入MicroPython灵魂

1. 为什么选择MicroPython&#xff1f; 对于刚接触树莓派Pico&#xff08;RP2040&#xff09;的新手来说&#xff0c;选择MicroPython作为开发语言是个明智的决定。这就像第一次学骑自行车时选择带辅助轮的车子——它降低了入门门槛&#xff0c;让你能快速感受到编程的乐趣。Mi…...

基于MCP协议构建安全AI支付工具:从原理到实践

1. 项目概述与核心价值最近在折腾AI智能体开发&#xff0c;特别是想给Claude Desktop这类工具增加点“超能力”&#xff0c;比如让它能直接帮我处理支付、查询订单状态&#xff0c;甚至自动对账。这想法听起来挺酷&#xff0c;但真动手去实现&#xff0c;发现最大的拦路虎不是写…...

8051嵌入式开发中的数据覆盖与代码分页技术详解

1. A51汇编中的数据覆盖与代码分页技术解析在8051嵌入式开发中&#xff0c;内存资源往往捉襟见肘。我曾在一个烟雾报警器项目中&#xff0c;主控芯片只有128字节RAM和4KB Flash&#xff0c;却要实现复杂的烟雾浓度算法和无线通信协议。正是通过数据覆盖(Data Overlaying)和代码…...

基于Ollama与Streamlit的本地大模型智能对话应用snowChat部署指南

1. 项目概述&#xff1a;一个基于本地大模型的智能对话应用最近在折腾本地部署的大语言模型&#xff0c;发现了一个挺有意思的项目&#xff0c;叫snowChat。这名字听起来就挺“冷”的&#xff0c;但功能却很“热”——它本质上是一个让你能在自己电脑上&#xff0c;用本地的大模…...