unity打AB包,AssetBundle预制体与图集(三)

警告:
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(图集名,带参回调);
然后,你通过他给你的图集名,去找相应的图集,然后通过这个回调接口,还给他

我的案例参考
声明
在这里插入图片描述
初始化我的图集
在这里插入图片描述
通用的调用图集方法
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值