加载新场景后,变量值将被删除(C#)(Unity)

时间:2016-11-19 20:50:10

标签: c# list unity3d

简短的言论,我想要做的事情: 我正在Unity工作。在第一个场景中,我有一个带有8个输入字段的UI画布,供用户输入最多8个名称。当用户输入他/她想要的名字数量时,他/她按下完成的'按钮,并将所有名称以正确的顺序添加到列表中并加载新场景。然后游戏开始,游戏以慢性顺序通过列表,并将任务交给转向的人。

问题: 名称将正确添加到列表中。但是当场景发生变化时,列表会自行清空,并删除所有字符串变量。我无法弄清楚原因。

public string namePlayer1, namePlayer2, namePlayer3;
public bool player1IsPlaying, player2IsPlaying, player3IsPlaying = false;
List<string> playerList;

public void getInput1(string player1Name)
{
   if (player1Name == "")
    {
        player1IsPlaying = false;
    }
    else
    {
        namePlayer1 = player1Name;
        player1IsPlaying = true;
    }
}

此代码由结束编辑&#39;执行。 event,当用户在UI输入字段中输入名称时。当用户输入他/她想要的名字时,他/她按下“完成”的名称。按钮,执行此代码:

public void PutNamesInList()
{
    if (player1IsPlaying)
    {
        playerList.Add(namePlayer1);
    }
    if (player2IsPlaying)
    {
        playerList.Add(namePlayer2);
    }
    if (player3IsPlaying)
    {
        playerList.Add(namePlayer3);
    }
    startGame();
}

现在加载新场景时,所有变量都是空的。

感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

加载场景时(如果不是以加法方式),它会在加载新场景之前销毁所有内容。如果您不希望自动销毁GameObject(及其属性),请使用:https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html

答案 1 :(得分:0)

如果您不愿意使用Object.DontDestroyOnLoad您还可以使用PlayerPrefs,这意味着

  

在游戏会话之间存储和访问玩家偏好。