1、思路:加载图片的请求都加到队列中,然后一个加载完一个再去加载下一个,直到加载完。
List<Action> _loadAction = new List<Action>();
public void LoadRaw(string url, Image image)
{
if(string.IsNullOrEmpty(url)) return;
_loadAction.Add(()=>{ StartCoroutine(StartLoadImage(url,image))});
}
IEnumerator StartLoadImage(string url,Image image)
{
using(UnityWebRequest uwr = UnityWebRequestTexture.GetTexture(url))
{
yield return uwr.SendWebRequest();
if(uwr.isHttpError || uwr.isNetworkError) Debug.Log(uwr.error);
else
{
try
{
Texture2D texture2d = new Texture2D(1,1);
texture2d = DownloadHandlerTexture.GetContent(uwr);
image.sprite = Sprite.Create(texture2d,new Rect(0,0,texture2d.width,texture2d.height),Vector2.zero);
Resources.UnloadUnusedAssets();
_loadAction.RemoveAt(0);
isLoad = false;
}
catch(Exception ex)
{
}
}
}
}
bool isLoad = false;
Void Update()
{
if(!isLoad && _loadAction.Count != 0)
{
isLoad = true;
Action action = _loadAction[0];
action.Invoke();
}
}
2、问题:
问题是相对也存在的。当加载的数据还在队列中,但是已经跳转到其它的场景,则会出现报错的问题。文章来源:https://www.toymoban.com/news/detail-564288.html
每次跳转场景的时候,需要把队列中的数据情况,然后isLoad=false;文章来源地址https://www.toymoban.com/news/detail-564288.html
到了这里,关于Unity队列加载图片,解决大量同时加载资源卡顿问题与思路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!