简短的言论,我想要做的事情: 我正在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();
}
现在加载新场景时,所有变量都是空的。
感谢任何帮助。
答案 0 :(得分:3)
加载场景时(如果不是以加法方式),它会在加载新场景之前销毁所有内容。如果您不希望自动销毁GameObject(及其属性),请使用:https://docs.unity3d.com/ScriptReference/Object.DontDestroyOnLoad.html
答案 1 :(得分:0)
如果您不愿意使用Object.DontDestroyOnLoad您还可以使用PlayerPrefs,这意味着
在游戏会话之间存储和访问玩家偏好。