一般项目中需要替换一些UI的图片时,每次都要打开源工程修改很麻烦,就想了一个动态加载外部图片资源替换打包好的exe或者webgl应用中图片的方法:
/// <summary>
/// 加载StreamingAssets下所有的Textures
/// </summary>
private void LoadTexture()
{
List<string> filePaths = new List<string>();
string texType = "*.PNG|*.JPG"; //图片格式
string[] TextureType = texType.Split('|');
int number = 0;
for (int i = 0; i < TextureType.Length; i++)
{
dirs = Directory.GetFiles(Application.streamingAssetsPath + "/Textures", TextureType[i]); //将每个图片路径存入到字典
for (int j = 0; j < dirs.Length; j++)
{
filePaths.Add(dirs[j]);
}
number += dirs.Length;
}
//加载所有图片
for (int i = 0; i < filePaths.Count; i++)
{
Texture2D t = new Texture2D(100, 100);
t.LoadImage(GetTextureByte(filePaths[i]));
allTex2D.Add(t);
}
}
private static byte[] GetTextureByte(string texturepath)
{
FileStream files = new FileStream(texturepath, FileMode.Open);
byte[] texByte = new byte[files.Length];
files.Read(texByte, 0, texByte.Length);
files.Close();
return texByte;
}
如果是静态webgl的话需要用到www进行加载,动态webgl话需要用到unitywebrequset到服务器进行加载。