Unity SKFramework框架(八)、SceneLoader 场景加载器

举报
CoderZ1010 发表于 2022/09/25 06:39:14 2022/09/25
【摘要】 目录 简介 一、通过名称加载场景 二、通过指针加载场景 三、事件 四、示例 简介 加载场景的重载函数如下: /// <summary>/// 异步加载场景/// </summary>/// <param name="sceneName">场景名称</param>/...

目录

简介

一、通过名称加载场景

二、通过指针加载场景

三、事件

四、示例


简介

加载场景的重载函数如下:


  
  1. /// <summary>
  2. /// 异步加载场景
  3. /// </summary>
  4. /// <param name="sceneName">场景名称</param>
  5. /// <param name="sceneActivationDelay">激活延迟时长</param>
  6. /// <param name="loadSceneMode">场景加载方式</param>
  7. /// <returns></returns>
  8. public static SceneLoader LoadAsync(string sceneName, float sceneActivationDelay = 3f, LoadSceneMode loadSceneMode = LoadSceneMode.Single)
  9. /// <summary>
  10. /// 异步加载场景
  11. /// </summary>
  12. /// <param name="sceneBuildIndex">场景指针</param>
  13. /// <param name="sceneActivationDelay">激活延迟时长</param>
  14. /// <param name="loadSceneMode">场景加载方式</param>
  15. /// <returns></returns>
  16. public static SceneLoader LoadAsync(int sceneBuildIndex, float sceneActivationDelay = 3f, LoadSceneMode loadSceneMode = LoadSceneMode.Single)

其中sceneActivationDelay参数表示当场景在内存中加载完成时,需要延迟该时长才允许场景激活,原理是首先将异步操作AsyncOperation中的allowSceneActivation设为false,在场景加载完成并延迟后再将其设为true,该参数默认值为3

loadSceneMode表示加载场景的方式,默认值为Single,表示覆盖当前场景,Additive则表示场景叠加到当前场景。

一、通过名称加载场景


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private void Start()
  6. {
  7. //加载名为Example的场景
  8. SceneLoader.LoadAsync("Example", 5f);
  9. }
  10. }


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. using UnityEngine.SceneManagement;
  4. public class Example : MonoBehaviour
  5. {
  6. private void Start()
  7. {
  8. //加载名为Example的场景
  9. SceneLoader.LoadAsync("Example", 0f, LoadSceneMode.Additive);
  10. }
  11. }

二、通过指针加载场景


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private void Start()
  6. {
  7. //加载BuildIndex为1的场景
  8. SceneLoader.LoadAsync(1);
  9. }
  10. }

三、事件

场景加载事件包含开始事件加载中事件完成事件,通过如下方式设置:


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. public class Example : MonoBehaviour
  4. {
  5. private void Start()
  6. {
  7. //加载名为Example的场景
  8. SceneLoader.LoadAsync("Example", 5f)
  9. .OnBegan(() => Debug.Log("开始加载"))
  10. .OnLoading(progress => Debug.Log(string.Format("加载进度 {0}", progress)))
  11. .OnCompleted(() => Debug.Log("加载完成"));
  12. }
  13. }

四、示例


  
  1. using UnityEngine;
  2. using SK.Framework;
  3. using UnityEngine.UI;
  4. using UnityEngine.SceneManagement;
  5. public class Example : MonoBehaviour
  6. {
  7. //场景加载过渡界面
  8. [SerializeField] GameObject loadingView;
  9. //加载进度条
  10. [SerializeField] Image progress;
  11. //加载进度文本
  12. [SerializeField] Text progressText;
  13. private void Start()
  14. {
  15. //加载名为Example的场景
  16. SceneLoader.LoadAsync("Example", 5f, LoadSceneMode.Additive)
  17. .OnBegan(() => loadingView.SetActive(true))
  18. .OnLoading(s =>
  19. {
  20. progress.fillAmount = s;
  21. progressText.text = string.Format("{0}%", Mathf.Round(s * 100));
  22. })
  23. .OnCompleted(() => loadingView.SetActive(false));
  24. }
  25. }

效果: 

文章来源: coderz.blog.csdn.net,作者:CoderZ1010,版权归原作者所有,如需转载,请联系作者。

原文链接:coderz.blog.csdn.net/article/details/124877549

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。