介绍
同步加载是指在加载资源时,程序会停止等待资源加载完毕后再继续执行下面的代码。这种加载方式的优点是简单直接,代码编写起来比较容易,但是会导致程序在等待资源加载时出现卡顿现象,影响用户体验。
异步加载则是指在加载资源时,程序不会等待资源加载完毕后再继续执行下面的代码,而是在后台继续执行其他代码。这种加载方式的优点是可以避免程序的卡顿现象,提高用户体验,但是需要编写复杂的回调函数来处理加载完毕后的逻辑。
方法
同步加载示例:
public GameObject prefab;
void Start()
{
prefab = Resources.Load<GameObject>("Prefabs/MyPrefab"); // 同步加载资源
}
异步加载示例:
public GameObject prefab;
void Start()
{
StartCoroutine(LoadPrefab()); // 异步加载资源
}
IEnumerator LoadPrefab()
{
ResourceRequest request = Resources.LoadAsync<GameObject>("Prefabs/MyPrefab"); // 异步加载资源
yield return request;
prefab = request.asset as GameObject; // 将加载完毕的资源赋值给变量
}
举例子
异步加载场景并等待3秒
IEnumerator LoadSceneAsync()
{
// 异步加载场景
AsyncOperation async = SceneManager.LoadSceneAsync("YourSceneName", LoadSceneMode.Additive);
// 等待加载完成
yield return async;
// 等待3秒
yield return new WaitForSeconds(3);
// 卸载场景
SceneManager.UnloadSceneAsync("YourSceneName");
}