嗨,我正在努力解决这个问题。在问这里之前我经常搜索。
所以我编写了一个街机游戏,当它死亡时,会弹出一个带有继续选项的菜单,使用五个生命中的一个。与地铁冲浪者一样用钥匙。
问题在于,当我使用一颗心时,我想要保存它。但每次我重新启动游戏时,它都会一直说出初始数字为五。或者不使用生命,它本身就会减去一个而不用点击"救救我"按钮。
这是我的代码:
public Text heart;
public Text heart2;
public int counter;
void Start () {
heart.text = "" + counter;
heart2.text = "" +counter;
}
// Update is called once per frame
void Update () {
}
public void SaveMe()
{
heart.text = counter.ToString();
heart2.text = counter.ToString();
int heartScore = PlayerPrefs.GetInt("Life2", 0);
heartScore--;
if(heartScore<0)
{
heartScore = counter;
}
PlayerPrefs.SetInt("Life2", heartScore);
heart.text = PlayerPrefs.GetInt("Life2", 0).ToString();
heart2.text = PlayerPrefs.GetInt("Life2", 0).ToString();
}
}
然后我在按钮脚本中调用此方法。
答案 0 :(得分:1)
您应该将生命计数器保存在文件中,或将PlayerPrefs保存为统一,以便加载场景不会影响计数器。
在游戏会话之间存储和访问玩家偏好。
答案 1 :(得分:-1)
当Unity加载一个新场景(如果不是以加法方式)时,它会在加载新场景之前销毁属于它的所有内容。如果您不想自动销毁GameObject,请阅读DontDestroyOnLoad
的说明通常还要考虑将您的游戏模型(在这种情况下是变量计数器)与不同的组件分开,并使用scriptable objects来管理它/它们。从长远来看,它会让你的生活更轻松。