Описание
Возвращает название сцены, которая в данный момент активна в игре или приложении.
Scene.name возвращает строковое значение времени выполнения, доступное только для чтения. name ограничено 244 символами. Имя сцены по умолчанию равно scene. Пользователь изменяет name во время создания игры.
Следующий пример скрипта изменяет сцену в зависимости от нажатия GUI.Button и имени сцены. Чтобы этот пример работал:
- Создайте проект с двумя сценами:
scene1иscene2. - Прикрепите приведенный ниже сценарий к GameObject, добавленному в
scene1. - Прикрепите тот же скрипт к GameObject, добавленному в
scene2. - Нажмите на GameObject и перейдите в Инспектор.
- В поля
My First Sceneи поляMy Second Sceneвведите названия сцен, которые вы хотите переключить. междуscene1иscene2. - Выберите
scene1, дважды щелкнув ее в проекте, и нажмитеPlay. Появится сценаscene1. - Нажмите кнопку
Load Next Scene, иscene2будет загружена.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class Example : MonoBehaviour
{
// These are the Scene names. Make sure to set them in the Inspector window.
public string myFirstScene, mySecondScene;
private string nextButton = "Load Next Scene";
private string nextScene;
private static bool created = false;
private Rect buttonRect;
private int width, height;
void Awake()
{
Debug.Log("Awake:" + SceneManager.GetActiveScene().name);
// Ensure the script is not deleted while loading.
if (!created)
{
DontDestroyOnLoad(this.gameObject);
created = true;
}
else
{
Destroy(this.gameObject);
}
// Specify the items for each scene.
Camera.main.clearFlags = CameraClearFlags.SolidColor;
width = Screen.width;
height = Screen.height;
buttonRect = new Rect(width / 8, height / 3, 3 * width / 4, height / 3);
}
void OnGUI()
{
// Return the current Active Scene in order to get the current Scene name.
Scene scene = SceneManager.GetActiveScene();
// Check if the name of the current Active Scene is your first Scene.
if (scene.name == myFirstScene)
{
nextButton = "Load Next Scene";
nextScene = mySecondScene;
}
else
{
nextButton = "Load Previous Scene";
nextScene = myFirstScene;
}
// Display the button used to swap scenes.
GUIStyle buttonStyle = new GUIStyle(GUI.skin.GetStyle("button"));
buttonStyle.alignment = TextAnchor.MiddleCenter;
buttonStyle.fontSize = 12 * (width / 200);
if (GUI.Button(buttonRect, nextButton, buttonStyle))
{
SceneManager.LoadScene(nextScene);
}
}
}
В следующем примере используются две сцены, одна из которых имеет длинное имя Scene из 244 цифр. Другой называется testScene. Чтобы этот пример работал:
- Создайте новый проект.
- Измените имя сцены по умолчанию на
testScene, выбрав ее, а затем используйте Assets->Rename. - Далее создайте вторую сцену, снова выберите ее и используйте Актив->Переименовать. Используйте имя, как показано ниже. (Это имя из 244 символов "0123456789...0123").
- Создайте сценарий C# и назовите его
Example.cs. - Добавьте следующий текст скрипта в
Example.cs. - Затем добавьте пустой GameObject с именем
GameObjectв каждую из двух сцен.
- Наконец скопируйте
Example.csв каждый из двух игровых объектов.
Используйте кнопку Игра, чтобы запустить сцену testScene. Показана кнопка графического интерфейса, которая позволяет переключаться между сценами.
using UnityEngine;
using UnityEngine.SceneManagement;
// SceneManagement.SceneManager-name example
public class Example : MonoBehaviour
{
private Scene scene;
void Start()
{
scene = SceneManager.GetActiveScene();
Debug.Log("Name: " + scene.name);
}
void OnGUI()
{
if (GUI.Button(new Rect(10, 10, 150, 100), "Change Scene"))
{
if (scene.name == "testScene")
{
// The scene to load has a 244 characters name.
SceneManager.LoadScene("0123456789012345678901234567890123456789"
+ "012345678901234567890123456789012345678901234567890123456789"
+ "012345678901234567890123456789012345678901234567890123456789"
+ "012345678901234567890123456789012345678901234567890123456789"
+ "012345678901234567890123");
}
else
{
SceneManager.LoadScene("testScene");
}
}
}
}

