Beispiel #1
0
    private IEnumerator LoadBundleAsync()
    {
        while (!Caching.ready)
        {
            yield return(null);
        }
        var baseUrl = RootBundleLoader.GetBundlesUrl();

        using (UnityWebRequest uwr = UnityWebRequestAssetBundle.GetAssetBundle(
                   $"{baseUrl}/{BundleName}.unity3d", Version, 0))
        {
            yield return(uwr.SendWebRequest());

            if (uwr.isNetworkError || uwr.isHttpError)
            {
                Debug.Log(uwr.error);
            }
            else
            {
                // Get downloaded asset bundle
                AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(uwr);
                var         originalAssetRequest = bundle.LoadAssetAsync <Sprite>("Original");
                yield return(originalAssetRequest);

                var changedAssetRequest = bundle.LoadAssetAsync <Sprite>("Changed");
                yield return(changedAssetRequest);

                OriginalRenderer.sprite = originalAssetRequest.asset as Sprite;
                ChangedRendrer.sprite   = changedAssetRequest.asset as Sprite;
                bundle.Unload(false);
            }
        }
    }
    private IEnumerator LoadBundleAsync()
    {
        var baseUrl = RootBundleLoader.GetBundlesUrl();

        using (UnityWebRequest uwr = UnityWebRequestAssetBundle.GetAssetBundle(
                   $"{baseUrl}/{BundleName}.unity3d", Version, 0))
        {
            yield return(uwr.SendWebRequest());

            if (uwr.isNetworkError || uwr.isHttpError)
            {
                Debug.Log(uwr.error);
            }
            else
            {
                // Get downloaded asset bundle
                var bundle       = DownloadHandlerAssetBundle.GetContent(uwr);
                var bundleImages = GetComponentsInChildren <BundleImage>();
                foreach (var bundleImage in bundleImages)
                {
                    var originalAssetRequest = bundle.LoadAssetAsync <Sprite>(bundleImage.BundleName);
                    yield return(originalAssetRequest);

                    var image = bundleImage.GetComponent <Image>();
                    image.sprite = originalAssetRequest.asset as Sprite;
                }
                bundle.Unload(false);
            }
        }
    }