Описание
Возвращает название сцены, которая в данный момент активна в игре или приложении.
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");
}
}
}
}