internal SceneRequest(AssetBundleManager manager, Int32 priority, AssetBundleCache assetBundleCache, AssetKey assetKey, SceneRequestCallback callback) : base(manager) { m_Priority = priority; m_AssetBundleCache = assetBundleCache; m_AssetKey = assetKey; m_Callback = callback; }
internal override void Update() { if (Manager.CheckAndLoadBundles(m_AssetBundleCache, m_Priority)) { EStatus status = m_AssetBundleCache.Status; if (status != EStatus.Ready) { if (status == EStatus.Error) { Debug.LogError("Error load SceneAssetBundle\nBundle: " + m_AssetBundleCache.Data.Name + "\nSceneName: " + SceneName); IsDone = true; Progress = 1f; Status = ERequestStatus.Error; ErrorText = m_AssetBundleCache.ErrorText; } } else { IsDone = true; Progress = 1f; Status = ERequestStatus.Done; } if (m_Callback != null) { try { m_Callback(this); } catch (Exception exception) { Debug.LogException(exception); } m_Callback = null; } } }
public SceneRequest RequestScene(String sceneName, Int32 priority, SceneRequestCallback callback, Object userToken) { if (String.IsNullOrEmpty(sceneName)) { throw new ArgumentException("value is null or empty", "sceneName"); } if (m_Database == null || m_AssetBundles == null) { throw new InvalidOperationException("Database not loaded!"); } AssetBundleData assetBundleData = m_Database.FindBundleByAssetName(sceneName); AssetBundleCache assetBundleCache; if (assetBundleData != null && m_AssetBundles.TryGetValue(assetBundleData.Name, out assetBundleCache)) { SceneRequest sceneRequest = new SceneRequest(this, priority, assetBundleCache, new AssetKey(sceneName, typeof(UnityEngine.Object)), callback); sceneRequest.Tag = userToken; m_RequestTasks.Add(sceneRequest); m_SortRequestFlag = true; m_CheckTaskFlag = true; return(sceneRequest); } return(null); }