using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.Networking; using UnityEngine.U2D; public class LoadFromAssetBundle : MonoBehaviour { List tags = new List(); void Awake() { #if !ENABLE_WEB_REQUEST_ASSET_BUNDLE Debug.Log("Please enable UnityWebRequestAssetBundle Module from PackageManager"); #endif } #if ENABLE_WEB_REQUEST_ASSET_BUNDLE void OnEnable() { SpriteAtlasManager.atlasRequested += RequestLateBindingAtlas; SpriteAtlasManager.atlasRegistered += AtlasRegistered; } void OnDisable() { SpriteAtlasManager.atlasRequested -= RequestLateBindingAtlas; SpriteAtlasManager.atlasRegistered -= AtlasRegistered; } void RequestLateBindingAtlas(string tag, System.Action action) { if (null == tags.FirstOrDefault(stringToCheck => stringToCheck.Contains(tag))) { tags.Add(tag); StartCoroutine(LoadAssetBundle(tag, action)); } } IEnumerator LoadAssetBundle(string tag, System.Action callback) { var assetbundleToLoad = "atlasbundle"; var loadOp = UnityWebRequestAssetBundle.GetAssetBundle("file://" + Application.streamingAssetsPath + "/" + assetbundleToLoad); yield return loadOp.SendWebRequest(); var ab = DownloadHandlerAssetBundle.GetContent(loadOp); if (null != ab) { var sa = ab.LoadAsset("fromassetbundle.spriteatlasv2"); callback(sa); Debug.Log("AssetBundle : " + tag + " has Atlas " + sa.name); } } void AtlasRegistered(SpriteAtlas spriteAtlas) { Debug.LogFormat("Registered {0}.", spriteAtlas.name); } #endif }