1、获取StreamingAssets的Content文件夹下的所有图片精灵
public class ImageManage : MonoBehaviour
{
List<Sprite> imageList = new List<Sprite>(); //加载的图片的列表
Public List<Image> images = new List<Image>();
void Start()
{
//加载所有图片
LoadAllPic();
for (int i = 0; i < images.Count; i++)
{
int index = i;
//当图片的数量小于生成的图片存储数组的数量,让图片存储的图片变成第一个
if (index > imageList.Count - 1)
{
index = 0;
}
//将图片赋值到预制体上
images[i].GetComponent<Image>().sprite = imageList[index];
}
}
#region 外部加载图片
//外部加载图片
void LoadAllPic()
{
//从StreamingAssets中加载图片
string imgtype = "*.BMP|*.JPG|*.GIF|*.PNG";
string[] ImageType = imgtype.Split('|');
for (int k = 0; k < ImageType.Length; k++)
{
//获取streamingAssets文件夹下所有的图片路径
string[] dirs = Directory.GetFiles(Application.streamingAssetsPath+"/Content", ImageType[k]);
for (int j = 0; j < dirs.Length; j++)
{
Texture2D tx = new Texture2D(100, 100);
tx.LoadImage(getImageByte(dirs[j]));
Sprite sprite = Sprite.Create(tx, new Rect(0, 0, tx.width, tx.height), new Vector2(-500, -500));
sprite.name = Path.GetFileNameWithoutExtension(dirs[j]);
//将获取的图片加到图片列表中
imageList.Add(sprite);
}
}
}
private static byte[] getImageByte(string imagePath)
{
FileStream files = new FileStream(imagePath, FileMode.Open);
byte[] imgByte = new byte[files.Length];
files.Read(imgByte, 0, imgByte.Length);
files.Close();
return imgByte;
}
#endregion
}
把代码挂载在一个空物体上,再把需要图片赋值的图片放入列表中,就可实现图片精灵的导入。
2、实现图片的动态增加和删除
//获取streamingAssets/Content里面的所有