No Description
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

LoadFromAssetBundle.cs 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using UnityEngine;
  5. using UnityEngine.Networking;
  6. using UnityEngine.U2D;
  7. public class LoadFromAssetBundle : MonoBehaviour
  8. {
  9. List<string> tags = new List<string>();
  10. void Awake()
  11. {
  12. #if !ENABLE_WEB_REQUEST_ASSET_BUNDLE
  13. Debug.Log("Please enable UnityWebRequestAssetBundle Module from PackageManager");
  14. #endif
  15. }
  16. #if ENABLE_WEB_REQUEST_ASSET_BUNDLE
  17. void OnEnable()
  18. {
  19. SpriteAtlasManager.atlasRequested += RequestLateBindingAtlas;
  20. SpriteAtlasManager.atlasRegistered += AtlasRegistered;
  21. }
  22. void OnDisable()
  23. {
  24. SpriteAtlasManager.atlasRequested -= RequestLateBindingAtlas;
  25. SpriteAtlasManager.atlasRegistered -= AtlasRegistered;
  26. }
  27. void RequestLateBindingAtlas(string tag, System.Action<SpriteAtlas> action)
  28. {
  29. if (null == tags.FirstOrDefault(stringToCheck => stringToCheck.Contains(tag)))
  30. {
  31. tags.Add(tag);
  32. StartCoroutine(LoadAssetBundle(tag, action));
  33. }
  34. }
  35. IEnumerator LoadAssetBundle(string tag, System.Action<SpriteAtlas> callback)
  36. {
  37. var assetbundleToLoad = "atlasbundle";
  38. var loadOp = UnityWebRequestAssetBundle.GetAssetBundle("file://" + Application.streamingAssetsPath + "/" + assetbundleToLoad);
  39. yield return loadOp.SendWebRequest();
  40. var ab = DownloadHandlerAssetBundle.GetContent(loadOp);
  41. if (null != ab)
  42. {
  43. var sa = ab.LoadAsset<SpriteAtlas>("fromassetbundle.spriteatlasv2");
  44. callback(sa);
  45. Debug.Log("AssetBundle : " + tag + " has Atlas " + sa.name);
  46. }
  47. }
  48. void AtlasRegistered(SpriteAtlas spriteAtlas)
  49. {
  50. Debug.LogFormat("Registered {0}.", spriteAtlas.name);
  51. }
  52. #endif
  53. }