Ejemplo n.º 1
0
    protected IEnumerator InitializeLevelAsync(string sceneAssetBundle, string levelName, bool isAdditive, System.Action <object> OnSceneLoadCompleted, object obj, System.Action <string> OnSceneLoadError)
    {
        // This is simply to get the elapsed time for this phase of AssetLoading.
        float startTime = Time.realtimeSinceStartup;

        // Load level from assetBundle.
        AssetLoadOperation request = AssetManager.LoadLevelAsync(sceneAssetBundle, levelName, isAdditive);

        if (request == null)
        {
            if (null != OnSceneLoadError)
            {
                OnSceneLoadError(levelName);
            }
            yield break;
        }
        yield return(StartCoroutine(request));

        Scene_AsyncOperation = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(levelName, UnityEngine.SceneManagement.LoadSceneMode.Single);
        Scene_AsyncOperation.allowSceneActivation = false;
        yield return(Scene_AsyncOperation);


        if (null != OnSceneLoadCompleted)
        {
            OnSceneLoadCompleted(obj);
        }
        // Calculate and display the elapsed time.
        float elapsedTime = Time.realtimeSinceStartup - startTime;

        Debug.Log("Finished loading scene " + levelName + " in " + elapsedTime + " seconds");
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Loads the level async.
    /// </summary>
    /// <returns>The level async.</returns>
    /// <param name="assetBundleName">Asset bundle name.</param>
    /// <param name="levelName">Level name.</param>
    /// <param name="isAdditive">If set to <c>true</c> is additive.</param>
    public static AssetLoadOperation LoadLevelAsync(string assetBundleName, string levelName, bool isAdditive)
    {
        AssetLoadOperation operation = null;

#if UNITY_EDITOR
        if (SimulateAssetBundleInEditor)
        {
            operation = new AssetBundleLoadLevelSimulationOperation(assetBundleName, levelName, isAdditive);
        }
        else
#endif
        {
            CollectionDependenciesLoadTask(assetBundleName);

            operation = new AssetBundleLoadLevelOperation(assetBundleName, levelName, isAdditive);

            m_InProgressOperations.Add(operation);
        }

        return(operation);
    }