Unity 6.3
0 онлайн 87 гостей 3 в системе
Вход

SceneManager.MoveGameObjectToScene

Declaration

public static void MoveGameObjectToScene(GameObject go, SceneManagement.Scene scene);

Параметры

Параметр Описание
Иди GameObject для перемещения.
сцена Scene для переезда.

Описание

Переместить GameObject из текущего Scene в новый Scene.

Вы можете переместить только корень GameObjects из одного Scene в другой. Это означает, что GameObject, который нужно переместить, не должен быть дочерним GameObject в его Scene. Это работает только на GameObjects, который перемещается в Scene, который уже загружен (аддитивно). Если вы хотите загрузить одну сцену, убедитесь, что используете DontDestroyOnLoad на GameObject, который вы хотите переместить в новый Scene, в противном случае Unity удалит его, когда загрузит новый Scene.

// This script moves the GameObject you attach in the Inspector to a Scene you specify in the Inspector.
// Attach this script to an empty GameObject.
// Click on the GameObject, go to its Inspector and type the name of the Scene you would like to load in the Scene field.
// Attach the GameObject you would like to move to a new Scene in the "My Game Object" field

// Make sure your Scenes are in your build (File>Build Settings).

using System.Collections; using UnityEngine; using UnityEngine.SceneManagement;

public class Example : MonoBehaviour { // Type in the name of the Scene you would like to load in the Inspector public string m_Scene;

// Assign your GameObject you want to move Scene in the Inspector public GameObject m_MyGameObject;

void Update() { // Press the space key to add the Scene additively and move the GameObject to that Scene if (Input.GetKeyDown(KeyCode.Space)) { StartCoroutine(LoadYourAsyncScene()); } }

IEnumerator LoadYourAsyncScene() { // Set the current Scene to be able to unload it later Scene currentScene = SceneManager.GetActiveScene();

// The Application loads the Scene in the background at the same time as the current Scene. AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(m_Scene, LoadSceneMode.Additive);

// Wait until the last operation fully loads to return anything while (!asyncLoad.isDone) { yield return null; }

// Move the GameObject (you attach this in the Inspector) to the newly loaded Scene SceneManager.MoveGameObjectToScene(m_MyGameObject, SceneManager.GetSceneByName(m_Scene)); // Unload the previous Scene SceneManager.UnloadSceneAsync(currentScene); } }