1. 新版sprite要打包成图集,需要手动创建SpriteAtlas资源,然后选择需要打包进图集资源的Sprite目录或资源文件
参考:https://docs.unity3d.com/Manual/class-SpriteAtlas.html
2. 将图集打包成AssetBundle的时候,不要勾选图集的include in build 选项
3. 由于Sprite所依赖的图片被打包进了图集,而图集又被打包进了AssetBundle,因此运行时Sprite显示为空白,此时可以使用Unity提供的延时绑定功能(Late Binding)
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);
}
}
(unity 2018.3.8f )已知问题:
问题1:一旦取消了图集的include in build选项,如果直接将此图集删除,再打包AssetBundle,则运行时SpriteAtlasManager.atlasRequested仍然会被调用。必须勾选include in build再删除图集。
问题2:Editor的Sprite Pack设置中,如果不选Aways Enabled,则在编辑器中运行时,用以上方法,Sprite显示为空白。但是在打包出来的应用程序中运行,则显示正常。
以下为windows app包显示的正常效果