初学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场景进入游戏模式测试的话就可以了。难道我之后弄这种场景切换的进度条,每次都要从上一个场景进入游戏模式测试吗?
希望有大佬能帮我解答,感激不尽。