【问题标题】:Variable values gets deleted after a new scene is loaded加载新场景后变量值被删除
【发布时间】:2016-11-19 20:50:09
【问题描述】:

简短说明,我正在尝试做的事情: 我正在 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;
    }
}

当用户在 UI 输入字段中完成输入名称时,此代码由“on end edit”事件执行。当用户输入他/她想要的名字后,他/她按下“完成”按钮,然后执行以下代码:

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

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

感谢任何帮助。

【问题讨论】:

    标签: c# list unity3d


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果你不愿意使用Object.DontDestroyOnLoad你也可以使用PlayerPrefs这意味着

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-12
        • 1970-01-01
        • 2012-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多