用c#写一个从场景“白色”跳转到场景“黑色”异步加载的代码
时间: 2023-09-07 22:13:32 浏览: 34
以下是一个简单的 C# 异步加载场景的代码示例:
```csharp
using UnityEngine;
using UnityEngine.SceneManagement;
using System.Collections;
using System;
public class SceneLoader : MonoBehaviour
{
public string sceneToLoad = "BlackScene";
public string loadingScene = "WhiteScene";
public float waitTime = 1f;
private AsyncOperation asyncOperation;
private void Start()
{
StartCoroutine(LoadSceneAsync());
}
IEnumerator LoadSceneAsync()
{
// 加载等待场景
asyncOperation = SceneManager.LoadSceneAsync(loadingScene);
asyncOperation.allowSceneActivation = false;
// 等待一定时间
yield return new WaitForSeconds(waitTime);
// 异步加载目标场景
asyncOperation = SceneManager.LoadSceneAsync(sceneToLoad);
asyncOperation.allowSceneActivation = false;
// 等待加载完成
while (!asyncOperation.isDone)
{
if (asyncOperation.progress >= 0.9f)
{
asyncOperation.allowSceneActivation = true;
}
yield return null;
}
}
}
```
使用方法:将该脚本添加到场景中的某个 GameObject 上,并在 Inspector 中设置好目标场景名、等待场景名和等待时间。当场景启动时,该脚本会先加载等待场景,等待一定时间后再异步加载目标场景。加载过程中,可以通过 `asyncOperation.isDone` 属性来判断加载是否完成,也可以通过 `asyncOperation.progress` 属性来获取加载进度。在加载完成后,可以通过 `asyncOperation.allowSceneActivation` 属性来切换到目标场景。