**写在前面,下面是自己做Demo的时候一些记录吧,参考了很多网上分享的资源
一、打图集
1.准备好素材(建议最好是根据图集名称按文件夹分开)
2、创建一个SpriteAtlas
3、将素材添加到图集中
4、生成图集
到此,我们的图集就准备好了
二、加载图集
1、在工程里面使用(正常包内使用建议打成AB,更新比较方便,加载方式和下面一样,工程为了方便,我将上面打好的图集放在Resources下面)
2、这是最喜欢的c+v环节,加载图集
1 using System.Collections; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.U2D; 5 6 public class UIResourceLoadManager : UnitySingleton<UIResourceLoadManager> 7 { 8 9 private Dictionary<string, SpriteAtlas> mUISpriteAtlasDic = new Dictionary<string, SpriteAtlas>(); 10 11 private T LoadResouceOfType<T>(string _resPath) where T:Object 12 { 13 T tempResource = null; 14 tempResource = Resources.Load<T>(_resPath); 15 return tempResource; 16 } 17 18 public SpriteAtlas GetSpriteAtlas(string _atlasName) 19 { 20 if (mUISpriteAtlasDic.ContainsKey(_atlasName)) 21 { 22 if (mUISpriteAtlasDic[_atlasName] == null) mUISpriteAtlasDic[_atlasName] = LoadResouceOfType<SpriteAtlas>("Chart/"+_atlasName); 23 } 24 else 25 { 26 mUISpriteAtlasDic.Add(_atlasName, LoadResouceOfType<SpriteAtlas>("Chart/" + _atlasName)); 27 } 28 return mUISpriteAtlasDic[_atlasName]; 29 } 30 31 public Sprite LoadSprite(string _atlasName,string _spriteName) 32 { 33 Sprite tempSprite = null; 34 SpriteAtlas tempAtlas = GetSpriteAtlas(_atlasName); 35 if(tempAtlas != null ) tempSprite = tempAtlas.GetSprite(_spriteName); 36 return tempSprite; 37 } 38 39 public Sprite[] LoadSprites(string _atlasName, Sprite[] _spriteArray) 40 { 41 SpriteAtlas tempAtlas = GetSpriteAtlas(_atlasName); 42 if (tempAtlas != null) 43 { 44 if (_spriteArray == null || _spriteArray.Length < tempAtlas.spriteCount) _spriteArray = new Sprite[tempAtlas.spriteCount]; 45 if (tempAtlas != null) tempAtlas.GetSprites(_spriteArray); 46 } 47 return _spriteArray; 48 } 49 } 50 51 public class UnitySingleton<T> : MonoBehaviour where T : Component 52 { 53 private static T _instance; 54 public static T Instance 55 { 56 get 57 { 58 if (_instance == null) 59 { 60 _instance = FindObjectOfType(typeof(T)) as T; 61 if (_instance == null) 62 { 63 GameObject tempObject = new GameObject(); 64 tempObject.hideFlags = HideFlags.HideAndDontSave; 65 _instance = (T)tempObject.AddComponent(typeof(T)); 66 Object.DontDestroyOnLoad(tempObject); 67 } 68 } 69 return _instance; 70 } 71 } 72 }