38 lines
1.1 KiB
C#
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 + " çàãðóæåíà è àêòèâíà.");
|
|
}
|
|
}
|