Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

AsyncOperation.allowSceneActivation

public bool allowSceneActivation;

Описание

Разрешить активировать сцены, как только они будут готовы.

Вы можете использовать это с SceneManager.LoadSceneAsync, чтобы отложить фактическую активацию сцены и выгрузку предыдущей сцены.

Когда для параметра allowSceneActivation задано значение false, Unity останавливает выполнение на уровне 0,9, а maintains.isDone — на значении false. . Если для параметра AsyncOperation.allowSceneActivation задано значение true, isDone может завершиться. Пока isDone равно false, очередь AsyncOperation останавливается. Например, если для LoadSceneAsync.allowSceneActivation установлено значение false, а для другой AsyncOperation (например, SceneManager.UnloadSceneAsync) инициализируется, Unity не вызывает вторую операцию до тех пор, пока для первой AsyncOperation.allowSceneActivation не будет установлено значение true.

Вы должны установить и использовать AsyncOperation.allowSceneActivation в функциях сопрограммы. Вы не можете установить и использовать AsyncOperation.allowSceneActivation в Awake, поскольку эта функция не является сопрограммой.

//This script lets you load a Scene asynchronously. It uses an asyncOperation to calculate the progress and outputs the current progress to Text (could also be used to make progress bars). //Attach this script to a GameObject //Create a Button (Create>UI>Button) and a Text GameObject (Create>UI>Text) and attach them both to the Inspector of your GameObject //In Play Mode, press your Button to load the Scene, and the Text changes depending on progress. Press the space key to activate the Scene. //Note: The progress may look like it goes straight to 100% if your Scene doesn’t have a lot to load. using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class AsyncOperationProgressExample : MonoBehaviour { public Text m_Text; public Button m_Button; void Start() { //Call the LoadButton() function when the user clicks this Button m_Button.onClick.AddListener(LoadButton); } void LoadButton() { //Start loading the Scene asynchronously and output the progress bar StartCoroutine(LoadScene()); } IEnumerator LoadScene() { yield return null; //Begin to load the Scene you specify AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("Scene3"); //Don't let the Scene activate until you allow it to asyncOperation.allowSceneActivation = false; Debug.Log("Pro :" + asyncOperation.progress); //When the load is still in progress, output the Text and progress bar while (!asyncOperation.isDone) { //Output the current progress m_Text.text = "Loading progress: " + (asyncOperation.progress * 100) + "%"; // Check if the load has finished if (asyncOperation.progress >= 0.9f) { //Change the Text to show the Scene is ready m_Text.text = "Press the space bar to continue"; //Wait to you press the space key to activate the Scene if (Input.GetKeyDown(KeyCode.Space)) //Activate the Scene asyncOperation.allowSceneActivation = true; } yield return null; } } }
Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3