예제 #1
0
        public BaseLoadInfo ResourceLoadAsync(string path, OnLoadEnd onLoadEnd)
        {
            BaseLoadInfo loadinfo = FindLoadedImp(path);

            if (loadinfo != null)
            {
                loadinfo.AddRef();
                if (loadinfo.LoadedState == BaseLoadInfo.LoadState.Loding)
                {
                    if (onLoadEnd != null)
                    {
                        loadinfo.WaitLoadAsync(onLoadEnd);
                    }
                }
                else
                {
                    if (onLoadEnd != null)
                    {
                        onLoadEnd(loadinfo);
                    }
                }
                return(loadinfo);
            }
            return(ResourceLoadAsyncImp(path, onLoadEnd));
        }
예제 #2
0
    IEnumerator WaitForLoadLevel(int level, bool additive = false)
    {
        loadingScreen.Show();
        OnLoadBegin.Dispatch();
#if (UNITY_5_2 || UNITY_5_1 || UNITY_5_0)
        AsyncOperation oper = additive ?  Application.LoadLevelAdditiveAsync(level) : Application.LoadLevelAsync(level);
#else
        AsyncOperation oper = UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(level, additive ? LoadSceneMode.Additive : LoadSceneMode.Single);
#endif

        OnProgress.Dispatch(oper.progress);

        while (!oper.isDone)
        {
            yield return(new WaitForFixedUpdate());

            OnProgress.Dispatch(oper.progress);
            loadingScreen.OnProgress(oper.progress);
        }

        Resources.UnloadUnusedAssets();

        OnLoadEnd.Dispatch();
        loadingScreen.Hide();
    }
예제 #3
0
 public void LoadScene(string sceneName)
 {
     if (sceneName != null)
     {
         m_currentSceneName = sceneName;
         OnLoadStart?.Invoke(sceneName);
         PhotonNetwork.LoadLevel(m_currentSceneName);
         OnLoadEnd?.Invoke(sceneName);
     }
 }
예제 #4
0
        private BaseLoadInfo ResourceLoadAsyncImp(string path, OnLoadEnd onLoadEnd)
        {
            BaseLoadInfo info = new ResourceLoadInfo();

            resourceObjects.Add(path, info);
            info.LoadAsync(path, loadInfo =>
            {
                if (loadInfo == null)
                {
                    return;
                }
                if (onLoadEnd != null)
                {
                    onLoadEnd(loadInfo);
                }
            });
            return(info);
        }