Я пытаюсь загрузить уровень с несколькими большими ресурсами в Unity 3D, и я не могу избавиться от заиканий и отставаний во время загрузки контента.
Я разделил свою главную сцену на отдельные подуровни и загружаю их асинхронно.
Итак, сначала я пытаюсь предварительно загрузить реальные ресурсы из папки ресурсов:
private IEnumerator preLoadAsset(string assetPath)
{
ResourceRequest asyncLoad = Resources.LoadAsync(assetPath);
yield return asyncLoad;
asyncLoadedAssetsCount += 1;
preloadSceneAssets();
}
Этот этап быстро завершается с минимальным влиянием на производительность.
private IEnumerator LoadYourAsyncScene(string sceneName)
{
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(sceneName, LoadSceneMode.Additive);
asyncLoad.allowSceneActivation = true;
yield return asyncLoad;
asyncLoadedScenesCount += 1;
loadAdditiveScenes();
}
Большинство задержек происходит здесь, независимо от того, установил ли я активацию сцены на true или false.
Я также установил приоритет фоновой загрузки приложения на Низкий ранее в сценарии:
Application.backgroundLoadingPriority = ThreadPriority.Low;
Что я делаю не так?
Помогает ли даже предварительная загрузка ресурсов перед загрузкой аддитивной сцены сверху, и если нет, то как я могу эффективно использовать предварительную загрузку ресурсов в память?
Примечание: аддитивные сцены пусты, за исключением одного большого актива в каждом из них, и функции Start / OnEnable / Awake не выполняются