以下介绍
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson10 : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
#region 知识点一 知识回顾
//我们目前已经学习了如何设置导入的图片
//如果我们想将导入的图片用于2D游戏开发,需要将图片类型设置为 Sprite精灵类型
//我们还学习了使用Sprite Editor精灵图片编辑器来对精灵图片进行编辑
//但是我们还没有真正的使用这些图片
//这节课我们就来讲解Sprite精灵图片的使用
#endregion
#region 知识点二 Sprite Renderer是什么
//顾名思义,Sprite Renderer是精灵渲染器
//所有2D游戏中游戏资源(除UI外)都是通过Sprite Renderer让我们看到的
//它是2D游戏开发中的一个极为重要的组件
#endregion
#region 知识点三 2D对象创建
//1.直接拖入Sprite图片
//2.右键创建
//3.空物体添加脚本
#endregion
#region 知识点四 参数讲解
#endregion
#region 知识点五 代码设置
GameObject obj = new GameObject();
SpriteRenderer sr = obj.AddComponent<SpriteRenderer>();
//动态的改变图片
sr.sprite = Resources.Load<Sprite>("dead1");
//动态的加载 图集中的图
Sprite[] sprs = Resources.LoadAll<Sprite>("RobotBoyIdleSprite");
sr.sprite = sprs[10];
print(sprs[10].name);
#endregion
#region 总结
//主要掌握参数含义 和 如何代码控制
//其中重要的参数是
//1.绘制模式 控制缩放规则
//2.遮罩相关
//3.层级相关
#endregion
}
// Update is called once per frame
void Update()
{
}
}
练习题 按名字提取multiple图集中的图
回答1:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MultipleMgr
{
private static MultipleMgr instance = new MultipleMgr();
public static MultipleMgr Instatnce => instance;
//存储 大图对应的小图资源的信息
private Dictionary<string, Dictionary<string, Sprite>> dic = new Dictionary<string, Dictionary<string, Sprite>>();
private MultipleMgr()
{
}
/// <summary>
/// 获取Multiple图集中的某一张小图
/// </summary>
/// <param name="multipleName">图集名</param>
/// <param name="spriteName">单张图片名</param>
/// <returns></returns>
public Sprite GetSprite(string multipleName, string spriteName)
{
//判断是否加载过该大图
if( dic.ContainsKey(multipleName) )
{
//判断大图中是否有该小图的信息
if (dic[multipleName].ContainsKey(spriteName))
return dic[multipleName][spriteName];
}
else
{
Dictionary<string, Sprite> dicTmp = new Dictionary<string, Sprite>();
Sprite[] sprs = Resources.LoadAll<Sprite>(multipleName);
for (int i = 0; i < sprs.Length; i++)
{
dicTmp.Add(sprs[i].name, sprs[i]);
}
dic.Add(multipleName, dicTmp);
//判断 是否有该名字的小图
if( dicTmp.ContainsKey(spriteName) )
return dicTmp[spriteName];
}
return null;
}
public void ClearInfo()
{
//清空
dic.Clear();
//卸载资源
Resources.UnloadUnusedAssets();
}
}