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
的详细解释:
-
用途:
SpriteRenderer
组件用于渲染精灵(Sprite)并控制其在 2D 和 3D 项目场景中的可视化效果。
-
添加组件:
- 创建精灵时(通过
GameObject > 2D Object > Sprite
),Unity 会自动创建一个附加了SpriteRenderer
组件的游戏对象。也可以通过Components
菜单(Component > Rendering > Sprite Renderer
)将该组件添加到现有的游戏对象。
- 创建精灵时(通过
-
属性:
- 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 根据精灵到摄像机的距离来渲染精灵的顺序。
-
脚本中的使用:
- 可以通过脚本获取
SpriteRenderer
组件,并对其属性进行操作。例如,改变精灵的颜色或翻转精灵。
- 可以通过脚本获取
SpriteRenderer
是 Unity 2D 开发中的核心组件之一,它为开发者提供了丰富的选项来控制精灵的渲染和表现。
Resources.LoadAll<>
讲解:
是 Unity 提供的一个泛型方法,它允许开发者从 Unity 项目的 Resources
文件夹中加载指定路径下的所有资源。这个方法对于动态加载多个同类型资源特别有用,比如加载多个精灵(Sprite)、纹理(Texture)、音频剪辑(AudioClip)等。
以下是 Resources.LoadAll<>
方法的一些详细说明:
基本用法
Resources.LoadAll<>
方法的基本语法如下:
Resources.LoadAll<T>(path);
T
是你想要加载的资源类型,比如Sprite
、Texture2D
、AudioClip
等。path
是相对于Resources
文件夹的路径,不包括文件扩展名。
返回值
这个方法返回一个包含所有加载资源的数组。如果指定路径下没有找到任何资源,或者资源类型不匹配,返回的数组将是空的。
示例
假设你有一个包含多个精灵的图集(Texture Atlas),你可以这样加载所有的精灵:
Sprite[] sprites = Resources.LoadAll<Sprite>("path/to/your/sprites");
这里 "path/to/your/sprites"
是你的资源相对于 Resources
文件夹的路径。
注意事项
-
性能考虑:
Resources.LoadAll<>
会将所有匹配的资源一次性加载到内存中,这可能会导致较大的内存消耗,特别是在加载大量资源时。 -
资源管理:由于
Resources.LoadAll<>
会加载路径下的所有资源,因此你需要确保路径的准确性,避免不必要的资源被加载。 -
资源类型:确保你加载的资源类型与
Resources
文件夹中的资源类型一致。 -
路径正确性:路径错误或资源未正确放置在
Resources
文件夹中都会导致加载失败。 -
后缀名:调用
Resources.LoadAll<>
时不需要包含文件的后缀名。 -
异步加载:如果你需要异步加载资源,可以考虑使用
AssetBundle
或Resources.UnloadAsset
等方法。 -
资源清理:由于
Resources.LoadAll<>
加载的资源会被保留在内存中,你需要手动管理这些资源,比如在不再需要时卸载它们。
Resources.LoadAll<>
是 Unity 资源管理中一个非常有用的工具,它提供了一种简单直接的方式来动态加载和管理项目中的资源。
相关文章:

unity3d—demo(实现给出图集名字和图片名字生成对应的图片)
目录 实现给出图集名字和图片名字生成对应的图片: 代码示例: dic: 键 是图集名称 值是一个字典 该字典键是图片名称 值是图片,结构如图: 测试代码: 结果: SpriteRenderer 讲解: Resour…...

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

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

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

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

【大数据学习 | 面经】yarn的资源申请和分配的单位-Container
在yarn中,资源的申请和分配是以container为单位进行的,而不是直接以application和task为单位。 每个提交到yarn上的应用程序(application)都有一个对应的ApplicationMaster(AM)。这个AM负责与ResourceMana…...

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

【组件封装】uniapp vue3 封装一个完整的Tabs(标签页)组件教程,功能由简到杂实现讲解。
文章目录 前言一、简单版Tabs代码实现: 二、下划线带动画的TabsAPI回顾:代码实现: 三、内容区域滑动切换切换动画代码实现:(2)禁用手势滑动切换(3)内容区域换为插槽 四、标签栏可滚动…...

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辅助临床启示撰写指南 前言基础分析框架第一阶段:核心要素分析第二阶段:应用场景展开 关键环节提示第三阶段&#x…...

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

git 使用配置
新拿到机器想配置git 获取代码权限,需要的配置方法 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’。错误信息的字面意思是:表“table_name”拒绝用户“user_name”“1.1.1.1”的SELECT命令 。 比较多的情况是:用户没有查看user表…...

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

代码随想录-算法训练营day41(动态规划04:01背包,01背包滚动数组,分割等和子集)
第九章 动态规划part04● 01背包问题,你该了解这些! ● 01背包问题,你该了解这些! 滚动数组 ● 416. 分割等和子集 正式开始背包问题,背包问题还是挺难的,虽然大家可能看了很多背包问题模板代码…...

c#中context.SaveChanges()方法
跟踪实体的状态: Entity Framework 使用 Change Tracker 来跟踪上下文中所有实体的状态。实体的状态可以是: Added:新添加的实体(即将插入到数据库中)。Modified:已修改的实体(即将更新数据库中…...

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

Node.js简单接口实现教程
Node.js简单接口实现教程 1. 准备工作 确保您的计算机已安装: 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前身,将LDM扩展到视频生成任务! 文章目录 0 论文工作1论文方法实验结果 0 论文工作 Video LDM作者也是Stable diffusion的作者,作者在SD的架构上进行扩展,实现了视频的生成。后续在Vid…...

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

npm, yarn, pnpm之间的区别
前言 在现代化的开发中,一个人可能同时开发多个项目,安装的项目越来越多,所随之安装的依赖包也越来越臃肿,而且有时候所安装的速度也很慢,甚至会安装失败。 因此我们就需要去了解一下,我们的包管理器&#…...

静态链接和动态链接的特点
静态链接 链接方式:在编译时,所有依赖的库代码被直接打包到生成的可执行文件中。这意味着在程序运行时,不需要再加载任何外部库文件。 优点: 独立性强:生成的可执行文件可以在没有依赖库的系统上直接运行&am…...

Mac曲线救国实现Bandizip右键一级菜单
一、前言 个人认为:Bandizip是Mac上最好用的压缩软件,没有之一。 在Mac系统上,学习版的Bandizip由于签名检验问题无法在访达右键的一级菜单显示 解压相关菜单。 有能力的,希望还是支持正版,找找优惠渠道应该100左右。…...

进度与预算
一个项目,如果进度上可以按时完成,一般来说预算不会超标,或者超标幅度有限。 一个项目,如果进度上严重超期,预算基本上会超标,而且超标很大。 现在很多项目,人力成本占比都比较大,…...

【教程】创建NVIDIA Docker共享使用主机的GPU
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 这套是我跑完整理的。直接上干货,复制粘贴即可! # 先安装toolkit sudo apt-get update sudo apt-get install -y ca-certifica…...

CEEMDAN-CPO-VMD二次分解(CEEMDAN+冠豪猪优化算法CPO优化VMD)
CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD) 目录 CEEMDAN-CPO-VMD二次分解(CEEMDAN冠豪猪优化算法CPO优化VMD)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 首先运用CEEMDAN对数据进行一次分解ÿ…...

图论理论基础和存储方式的实现
图论1 图论 (Graph theory) 是数学的一个分支,图是图论的主要研究对象。图 (Graph) 是由若干给定的顶点及连接两顶点的边所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系。顶点用于代表事物,连接两顶点的边则用于表示两个事物…...

【实分析】【二】2.2 (c)自然数的序
文章目录 前言一、自然数的序的定义二、自然数的序的基本性质三、序的三歧性四、强归纳法原理总结 前言 在2.2 (b)的末尾,我们定义了自然数的正性,现在,我们来定义自然数的序,它是一种自然数的二元关系,通过加法进行定…...

STM32串口接收与发送(关于为什么接收不需要中断而发生需要以及HAL_UART_Transmit和HAL_UART_Transmit_IT的区别)
一、HAL_UART_Transmit和HAL_UART_Transmit_IT的区别 1. HAL_UART_Transmit_IT(非阻塞模式): HAL_UART_Transmit_IT 是非阻塞的传输函数,也就是说,当你调用 HAL_UART_Transmit_IT 时,它不会等到数据完全发…...

k8s 之storageclass使用nfs动态申请PV
文章目录 配置角色权限部署nfs-client-provisioner创建 NFS StorageClass创建 PVC 来动态申请 PV在 Pod 中使用 PVC验证存储是否正确挂载使用 kubectl 和 jq 筛选 PVCwaiting for a volume to be created, either by external provisioner "nfs-diy" or manually cre…...