返回游戏或应用程序中当前处于活动状态的场景的名称。
Scene.name 返回一个运行时只读字符串值。name 限制为 244 个字符。场景的默认名称为 /scene/。用户在游戏创建期间更改 name。
以下脚本示例将根据 GUI.Button 点击情况和场景名称来更改场景。要使此示例运行,请执行以下操作:
1. 创建一个包含场景 scene1
和 scene2
的项目。
2. 将以下脚本附加到已添加到 scene1
的 GameObject。
3. 将同一个脚本附加到已添加到 scene2
的 GameObject。
4. 单击 GameObject 并转到 Inspector。
5. 在 My First Scene
字段和 My Second Scene
字段中,输入您要在 scene1
和 scene2
之间进行切换的场景的名称。
6. 在项目中双击 scene1
以将其选中,然后按 scene1
。此时将显示 scene1
场景。
7. 单击 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/。要使此示例运行,请执行以下操作:
1. 创建一个新的项目。
2. 将默认场景的名称更改为 /testScene/,方法是选中默认场景,然后选择 Assets > Rename。
3. 接下来,创建第二个场景,再次选中该场景并选择 Asset > Rename。使用如下所示的名称。(这是包含 244 个字符的名称“0123456789...0123”)。
4. 创建一个 C# 脚本,将其命名为 /Example.cs/。
5. 将以下脚本文本添加到 /Example.cs/。
6. 接下来,在这两个场景中都添加一个名为 GameObject
的空游戏对象。
7. 最后,将 Example.cs
复制到这两个游戏对象。\
使用 Game
按钮来启动 testScene
场景。此时将显示用于切换场景的 GUI 按钮。
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"); } } } }