0

我正在通过脚本动态生成下拉列表选项,并根据选项值和其他场景应该加载的某些条件。(通过单击下拉值新场景应该加载)。我已将所有必需的脚本附加到所有场景中的下拉游戏对象,并且动态下拉选项适用于启动场景,但是当加载新场景时,新的下拉列表为空,前一个感觉下拉列表的值未加载. 下面是脚本。谁能给我一个提示或示例脚本以将下拉值从一个场景转移到另一个场景。谢谢

''''

公共类SceneLoad:MonoBehaviour {

Dropdown m_Dropdown;
private ParseHandler parsehand;
int Scene_num;

public void AddDropdown()
{

    m_Dropdown = GetComponent<Dropdown>();
    m_Dropdown.ClearOptions();
    m_Dropdown.options.Add(new Dropdown.OptionData("--Starting Page--"));
    parsehand = GameObject.FindObjectOfType(typeof(ParseHandler)) as ParseHandler;
    foreach (string threat in parsehand.GetList())
    {

        if (threat == "TMP")
        {
            m_Dropdown.options.Add(new Dropdown.OptionData("Vehicle on highway changing the lane"));

        }
        if (threat == "DOS")
        {
            m_Dropdown.options.Add(new Dropdown.OptionData("Vehicle on highway met with an accident"));
        }
        if (threat == "HJK")
        {
            m_Dropdown.options.Add(new Dropdown.OptionData("Pedestrians behind the vehicle While unparking"));

        }
       

    }

    m_Dropdown.onValueChanged.AddListener(delegate { callingthescenes(m_Dropdown); });


}
private void callingthescenes(Dropdown mydropdown)
{
    select_scene(mydropdown.options[mydropdown.value].text);

}


public void select_scene(string scenetext)
{


    if (scenetext == "Pedestrians behind the vehicle While unparking")
    {

        SceneManager.LoadScene(1);

        Scene_num = 1;
    
    }
    if (scenetext == "Vehicle on highway changing the lane")
    {

        SceneManager.LoadScene(2);

        Scene_num = 2;

    }
}

}

4

1 回答 1

0

您可以使用DontDestroyOnLoadDontDestoryOnLoad方法是一种单行为方法,可确保在切换场景时,对象保存所有引用(如果存在于新场景中)和值。

新场景的加载会破坏所有当前场景对象。调用 Object.DontDestroyOnLoad 以在关卡加载期间保留对象。如果目标对象是组件或游戏对象,Unity 还会保留 Transform 的所有子对象。Object.DontDestroyOnLoad 不返回值。

用法,将其添加到您的 monobehaviour 脚本中,在课堂上。

DontDestroyOnLoad(this.gameObject);
于 2021-02-25T19:51:49.120 回答