警告:
spriteatlasmanager.atlasrequested wasn’t listened to while
条件一:图片打图集里面去了
条件二:然后图集打成AB包了
条件三:UI预制体也打到AB包里面去了
步骤一:先加载了图集
步骤二:再加载UI预制体
结果一:发现UI预制体的Image没有图片/图片错乱/图片是一整张图集,并且发出上面的警告。
原因是UI预制体里面的UI的图片已经找不到他对应的图集了;
解决方案是根据官网提供的方法:
using UnityEngine;
using UnityEngine.U2D;
public class AtlasLoader : MonoBehaviour
{
void OnEnable()
{
SpriteAtlasManager.atlasRequested += RequestAtlas;//设置好监听
}
void OnDisable()
{
SpriteAtlasManager.atlasRequested -= RequestAtlas;
}
void RequestAtlas(string tag, System.Action<SpriteAtlas> callback)
{
var sa = Resources.Load<SpriteAtlas>(tag);//加载你的图集资源
callback(sa);//将图集返回
}
}
我前面的二,有讲解怎么预加载图集。
可以先声明一个SpriteAtlas Sp ;
等你加载完之后,将加载的图集赋值给声明的Sp
然后注意,这个tag,他就是图集的名字。
还听不懂的话,就看下面的大白话。
原理就是,当一个UI被你加载出来的时候。
这个UI Image需要加载一个sprite到他上面显示,
此时他就会发送一个事件RequestAtlas(图集名,带参回调);
然后,你通过他给你的图集名,去找相应的图集,然后通过这个回调接口,还给他
我的案例参考
声明
初始化我的图集
通用的调用图集方法