初学Uinty,版本2019.3.8.f1代码使用VS2019

初学Uinty,版本2019.3.8.f1代码使用VS2019

初学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吗unity 异步加载场景,还是设置不正确?我之前一直在B场景测试,进度条的效果死活不成功unity 异步加载场景,弄了很久才发现从A场景进入游戏模式测试的话就可以了。难道我之后弄这种场景切换的进度条,每次都要从上一个场景进入游戏模式测试吗?

希望有大佬能帮我解答,感激不尽。

文章来源:https://ask.csdn.net/questions/1071606