Seaskyen 2020-05-14 15:18 采纳率: 0%
浏览 625

Unity中使用异步加载时在当前场景进入游戏模式为什么会无视allowSceneActivation=False直接完成加载?

初学Uinty,版本2019.3.8.f1.
C#代码使用VS2019编写.
我制作了3个场景,A、B、C。B是A到C加载的中间场景。如果我在B场景测试,进入游戏模式,以下代码不会执行,无视allowSceneActivation=False的条件,直接加载进入C场景。

if (curProgressValue == 100)
        {
            operation.allowSceneActivation = true;//启用自动加载场景  
            loadingText.text = "OK";//文本显示完成OK  

        }

脚本在Main Camera中执行。
图片说明

如果在B场景直接进入游戏模式,进度条在2%卡顿一下,然后就直接跳转到新场景了。(此时还是operation.allowSceneActivation的值还是False)
图片说明

以下是在B场景异步加载C的完整代码:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UnityEngine.SceneManagement;


public class AsyncLoadScene : MonoBehaviour
{
    public Text loadingText;
    public Image progressBar;
    public string nextSceneName;
    private int curProgressValue = 0;

    private AsyncOperation operation;

    // Use this for initialization
    void Start()
    {
        if (SceneManager.GetActiveScene().name == "Loading")
        {
            //启动协程
            StartCoroutine(AsyncLoading());
        }
    }

    IEnumerator AsyncLoading()
    {
        operation = SceneManager.LoadSceneAsync(nextSceneName);
        //阻止当加载完成自动切换
        operation.allowSceneActivation = false;

        yield return operation;
    }

    // Update is called once per frame
    void Update()
    {

        int progressValue = 100;

        if (curProgressValue < progressValue)
        {
            curProgressValue++;
        }

        loadingText.text = curProgressValue + "%";//实时更新进度百分比的文本显示  

        progressBar.fillAmount = curProgressValue / 100f;//实时更新滑动进度图片的fillAmount值  

        if (curProgressValue == 100)
        {
            operation.allowSceneActivation = true;//启用自动加载场景  
            loadingText.text = "OK";//文本显示完成OK  

        }
    }
}

我觉得很奇怪,这是什么bug吗,还是设置不正确?我之前一直在B场景测试,进度条的效果死活不成功,弄了很久才发现从A场景进入游戏模式测试的话就可以了。难道我之后弄这种场景切换的进度条,每次都要从上一个场景进入游戏模式测试吗?
希望有大佬能帮我解答,感激不尽。

  • 写回答

4条回答 默认 最新

  • 关注
    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题