38 lines
1.1 KiB
C#

using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
public class StartGameScript : MonoBehaviour
{
public void StartGame()
{
StartCoroutine(LoadSceneAsync(StaticDataMap.SelectedMap, SceneManager.GetActiveScene().name));
Debug.Log("Çàãðóçêà");
}
private IEnumerator LoadSceneAsync(string newScene, string oldScene)
{
// Çàãðóæàåì íîâóþ ñöåíó àñèíõðîííî
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(newScene, LoadSceneMode.Additive);
// Îæèäàåì, ïîêà íîâàÿ ñöåíà ïîëíîñòüþ çàãðóçèòñÿ
while (!asyncLoad.isDone)
{
yield return null;
}
// Äåëàåì çàãðóæåííóþ ñöåíó àêòèâíîé
SceneManager.SetActiveScene(SceneManager.GetSceneByName(newScene));
// Âûãðóæàåì ñòàðóþ ñöåíó
AsyncOperation asyncUnload = SceneManager.UnloadSceneAsync(oldScene);
// Îæèäàåì, ïîêà ñòàðàÿ ñöåíà ïîëíîñòüþ âûãðóçèòñÿ
while (!asyncUnload.isDone)
{
yield return null;
}
Debug.Log("Ñöåíà " + oldScene + " âûãðóæåíà, à ñöåíà " + newScene + " çàãðóæåíà è àêòèâíà.");
}
}