Example #1
0
 /// <summary>
 /// 异步加载场景
 /// </summary>
 /// <param name="finishCallBack">加载完成后回调</param>
 /// <param name="sceneName">场景名</param>
 /// <param name="panelType">加载后第一个加载的panel</param>
 /// <param name="paramList">panel需要的参数</param>
 public void LoadSceneAsync(string sceneName, OnAsyncLoadUIFinish finishCallBack, UIPanelType panelType = UIPanelType.None, params object[] paramList)
 {
     if (SceneManager.GetActiveScene().name == sceneName)
     {
         Debug.LogError("当前出于该场景下:" + sceneName + " 无法重复加载!");
         return;
     }
     m_Mono.StartCoroutine(StartLoading(sceneName, finishCallBack, panelType, paramList));
 }
Example #2
0
    /// <summary>
    /// 异步加载面板
    /// </summary>
    /// <param name="panelType">panel类型</param>
    /// <param name="finishCallBack">panel加载完成后回调</param>
    /// <param name="paramList">panel加载需要携带的参数</param>
    public void PushPanelSync(UIPanelType panelType, OnAsyncLoadUIFinish finishCallBack, params object[] paramList)
    {
        if (panelType == UIPanelType.None)
        {
            return;
        }
        AsyncLoadPanelParam param = m_AsyncPanelParamPool.Spawn();

        if (param != null)
        {
            param.m_PanelType      = panelType;
            param.m_FinishCallBack = finishCallBack;
            param.paramList        = paramList;
            m_AsyncLoadPanelParamList.Add(param);
        }
    }
Example #3
0
    IEnumerator StartLoading(string sceneName, OnAsyncLoadUIFinish finishCallBack, UIPanelType panelType = UIPanelType.None, params object[] paramList)
    {
        BasePanel      panel           = UIManager.Instance.PushPanel(UIPanelType.AsyncLoadingPanel);
        int            displayProgress = 0;
        int            toProgress      = 0;
        AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);

        op.allowSceneActivation = false;
        while (op.progress < 0.9f)
        {
            toProgress = (int)op.progress * 100;
            while (displayProgress < toProgress)
            {
                ++displayProgress;
                SetLoadingPercentage(panel, displayProgress);
                yield return(new WaitForEndOfFrame());
            }
        }

        toProgress = 100;
        while (displayProgress < toProgress)
        {
            ++displayProgress;
            SetLoadingPercentage(panel, displayProgress);
            yield return(new WaitForEndOfFrame());
        }
        op.allowSceneActivation = true;
        UIManager.Instance.PopPanel();

        BasePanel basePanel = null;

        if (panelType != UIPanelType.None)
        {
            basePanel = UIManager.Instance.PushPanel(panelType, paramList: paramList);
        }
        ClearCache();
        finishCallBack?.Invoke(basePanel);
    }
Example #4
0
 public void Reset()
 {
     m_PanelType      = UIPanelType.None;
     m_FinishCallBack = null;
     paramList        = null;
 }