C# 我可以通过public void或其他方式更改场景(值?)?我不想每次都编写新代码并更改要加载的场景

C# 我可以通过public void或其他方式更改场景(值?)?我不想每次都编写新代码并更改要加载的场景,c#,unity3d,3d,scene-manager,C#,Unity3d,3d,Scene Manager,这是我正在使用的代码。如果目标被带有正确标记的对象触及,它将切换到另一个场景。现在我想知道如何在不打开代码的情况下通过unity更改场景的数量 using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class levelend: MonoBehaviour { [SerializeField] string strTag; priva

这是我正在使用的代码。如果目标被带有正确标记的对象触及,它将切换到另一个场景。现在我想知道如何在不打开代码的情况下通过unity更改场景的数量

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

public class levelend: MonoBehaviour
{
    [SerializeField]
    string strTag;

    private void OnCollisionEnter(Collision collision)
    {
        if (collision.collider.tag == strTag)
            SceneManager.LoadScene(1);
    }
}

编辑:哦,我刚才看到你只想在编辑器中更改它,只需创建一个公共变量,然后可以在unity编辑器中更改该变量

public int levelNumber = 1;

private void OnCollisionEnter(Collision collision)
{
    if (collision.collider.tag == strTag)
           SceneManager.LoadScene(levelNumber);
    }
如果你想让一个对象持续存在,你可以使用'DontDestroyOnLoad(GameObject)`[1]对象方法。例如:
void Awake(){
     DontDestroyOnLoad(this)
}
如果对象可能已经存在于另一个场景中,请确保在开始之前检查对象是否存在,并销毁不需要的对象。 另外,更改LoadScene代码。当前,您始终在加载1。如果你的场景是从1到x计算的,你可以使用
intx=1
并添加
x++到是。例如:

void Awake(){
     DontDestroyOnLoad(this)
}
private void OnCollisionEnter(Collision collision)
    {
        if (collision.collider.tag == strTag)
            x++;
            SceneManager.LoadScene(x);
    }
例如,如果您的场景没有被计算,您可以使用字符串数组或其他东西并在上面迭代

[1]