使用了Unity5.0 之后的版本,做UI界面再也不想用第三方的UI插件了,毕竟支持比较好!但也有很多不足的地方,比如Sprite的使用,系统没有提供根据Sprite名称获取Sprite的方法,所以一开始我是直接把Sprite的路径保存在文件里面,使用的时候Resources.Load一下,这样做每次修改都要更新文件,很麻烦,而且当Sprite超多的时候就更加麻烦了,NGUI和2Dtoolkit里都有图集的概念来管理这些Sprite,但是原生的是没有的!一开始自己的想法是把每张Sprite保存到Prefab里面,百度一下,原来雨松MOMO大神也有这么介绍,他的文章地址点击打开链接;好,既然思路正确,虽然雨松MOMO也有给出了代码,不过还是要自己按照自己的风格写一遍,哈哈哈!
首先写一个UIAtlas类,直接盗用NGUI的名称,不要介哈,这个类主要提供根据名称获取Sprite的接口!主要代码如下:
public class UIAtlas : MonoBehaviour
{
private Dictionary<string, Sprite> spriteDictionary = new Dictionary<string, Sprite>();
private bool isInit = false;
void Awake()
{
InitSprites();
}
void InitSprites()
{
if (!isInit)
{
SpriteRenderer[] renders = GetComponentsInChildren<SpriteRenderer>();
foreach (var render in renders)
{
if (!spriteDictionary.ContainsKey(render.name))
{
spriteDictionary.Add(render.sprite.name, render.sprite);
}
}
isInit = true;
}
}
public Sprite Load(string spriteName)
{
InitSpr