atlasRequested 是一个回调函数,当请求加载未包含在构建版本中的精灵时,它会发出通知。需要使用后期绑定手动加载精灵图集,并将精灵发送到 Unity 编辑器。
以下示例展示了如何设置该回调函数,以便通过后期绑定从 AssetBundle 加载精灵图集。请注意,此脚本用于加载精灵图集并将其绑定到已存在于构建或项目中的精灵。通过在运行时使用 GetSprites 检索精灵图集的内容,可以从精灵图集创建项目中不存在的精灵。
void OnEnable()
{
SpriteAtlasManager.atlasRequested += RequestAtlas;
}
void OnDisable()
{
SpriteAtlasManager.atlasRequested -= RequestAtlas;
}
void RequestAtlas(string tag, System.Action callback)
{
if (spriteAtlas == null)
{
StartCoroutine(LoadFromStreammingAsset(callback));
}
else
{
callback(spriteAtlas);
}
}
IEnumerator LoadFromStreammingAsset(System.Action callback)
{
string path = Application.streamingAssetsPath + "/" + bundleName;
print(path);
AssetBundleCreateRequest bundleLoadRequest = AssetBundle.LoadFromFileAsync(Application.streamingAssetsPath + "/" + bundleName);
yield return bundleLoadRequest;
bundle = bundleLoadRequest.assetBundle;
if (bundle == null)
{
Debug.Log("Failed to load AssetBundle!");
yield break;
}
SpriteAtlas spriteAtlas = bundle.LoadAsset(bundleName);
callback(spriteAtlas);
}