• 场景同步异步加载


    using System;
    using System.Collections;
    using UnityEngine;
    using UnityEngine.Events;
    using UnityEngine.SceneManagement;
    
    public class SceneComponent : GameComponent
    {
        public UnityAction beginLoad;
        public float LoadProgress { get; private set; }
    
        public void Awake()
        {
            Initinalize();
        }
        public override void Initinalize()
        {
            base.Initinalize();
        }
        public override void Release()
        {
    
        }
        public override void Update()
        {
    
        }
        public void LoadScene(string name)
        {
            SceneManager.LoadScene(name);
            if (beginLoad!=null)
            {
                beginLoad();
            }
        }
        public void LoadSceneAsync(string name, bool showLoadingUI=false, Action onComplete = null)
        {
            StartCoroutine(LoadSceneAsyn(name,showLoadingUI,onComplete));
        }
        private IEnumerator LoadSceneAsyn(string name,bool showLoadingUI=false,Action onComplete=null)
        {
            AsyncOperation asyncOperation = SceneManager.LoadSceneAsync(name);
            asyncOperation.allowSceneActivation = false;
            if (beginLoad!=null)
            {
                beginLoad();
            }
            if (showLoadingUI)
            {
                m_GameManager.GetGameSystem<UISystem>().GetUIView<LoadingView>().Show();
                yield return null;
            }
            LoadProgress = 0;
            while (asyncOperation.progress<0.9f)
            {
                LoadProgress = asyncOperation.progress;
                yield return null;
            }
            yield return new WaitForSeconds(2);
            while (LoadProgress < 1)
            {
                LoadProgress += 0.1f;
                yield return null;
            }
            asyncOperation.allowSceneActivation = true;
            if (showLoadingUI)
            {
                m_GameManager.GetGameSystem<UISystem>().GetUIView<LoadingView>().Hide();
            }
            if (onComplete != null)
            {
                onComplete();
            }
        }
    }
  • 相关阅读:
    Open Live Writer增加代码插件
    WinSCP列出’/’目录项出错
    Ueditor中增加迅雷下载支持
    Ueditor设置默认字体
    PDF编辑、删除、替换某页面或文字
    个人站长如何使用svn发布到服务器不遗漏文件
    PHP 测试程序运行时间 microtime函数用法
    LeetCode---Stack && Heap
    LeetCode---Binary Search
    LeetCode---Hash Table
  • 原文地址:https://www.cnblogs.com/DazeJiang/p/14269279.html
Copyright © 2020-2023  润新知