Beispiel #1
0
    //! 씬을 제거한다
    public void RemoveScene(ESceneIndex a_eSceneIndex,
                            System.Action <AsyncOperation, bool> a_oCallback)
    {
        var oScenePath = SceneUtility.GetScenePathByBuildIndex((int)a_eSceneIndex);

        this.RemoveScene(oScenePath, a_oCallback);
    }
    private IEnumerator ieLoadScene(ESceneIndex index)
    {
        updateNextScene();
        var loadScreen = GCanvasController.instance.setupLoadCanvas();

        m_LoadProgress = 0f;

        // unload prev scene
        if (SceneManager.sceneCount == 2)
        {
            var currentScene = SceneManager.GetSceneAt(1);
            if (currentScene != null)
            {
                yield return(ieUnloadScene(currentScene));
            }
        }

        m_ActiveScene = index;
        var operation = SceneManager.LoadSceneAsync((int)index, LoadSceneMode.Additive);

        operation.allowSceneActivation = false;
        // Load new scene
        while (operation.progress < 0.9f)
        {
            m_LoadProgress = Mathf.Lerp(0.4f, 0.9f, operation.progress);
            yield return(null);
        }
        operation.allowSceneActivation = true;
        m_LoadProgress = 1.0f;
        yield return(new WaitUntil(delegate { return operation.isDone; }));

        GCanvasController.instance.removeFromCover(loadScreen);
        yield return(null);
    }
Beispiel #3
0
    //! 씬을 전환한다
    public void ChangeScene(ESceneIndex a_eSceneIndex,
                            System.Action <AsyncOperation, bool> a_oCallback,
                            float a_fDelay = 0.0f,
                            LoadSceneMode a_eLoadSceneMode = LoadSceneMode.Single)
    {
        var oScenePath = SceneUtility.GetScenePathByBuildIndex((int)a_eSceneIndex);

        this.ChangeScene(oScenePath, a_oCallback, a_fDelay, a_eLoadSceneMode);
    }
 void Start()
 {
     if (SceneManager.sceneCount != 2)
     {
         LoadNextScene(false);
     }
     else
     {
         m_ActiveScene = (ESceneIndex)SceneManager.GetSceneAt(1).buildIndex;
     }
 }
    public void updateNextScene()
    {
        switch (m_NextScene)
        {
        case ESceneIndex.Menu:
        {
            m_NextScene = ESceneIndex.Sleep;
            break;
        }

        case ESceneIndex.Sleep:
        {
            m_NextScene       = ESceneIndex.Road;
            m_IsLastSceneHome = true;
            break;
        }

        case ESceneIndex.Road:
        {
            if (m_IsLastSceneHome)
            {
                m_NextScene = ESceneIndex.Work;
            }
            else
            {
                m_NextScene = ESceneIndex.Sleep;
            }
            break;
        }

        case ESceneIndex.Work:
        {
            m_NextScene       = ESceneIndex.Road;
            m_IsLastSceneHome = false;
            break;
        }
        }
    }
 public void LoadSceneAsync(ESceneIndex index, bool animate)
 {
     StopAllCoroutines();
     StartCoroutine(ieLoadScene(index));
 }