Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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;
         }
     }
 }
Ejemplo n.º 3
0
        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);
        }