我有一个脚本,它有一个int变量。在那个脚本中,我从那个int设置了PlayerPrefs,然后在另一个场景的另一个脚本中调用那个PlayerPref。
当我玩新游戏时,我想重新设置,并在游戏中进一步跟踪,即使在场景之间加载。
问题是,当我开始游戏时,值是0,然后我去另一个场景,得分为3,回到主场景,值再次为0,当它需要为3时。
我想让"新游戏"的功能,但正常的数据保存,如果用户从一个场景到另一个场景。
void Start()
{
PlayerPrefs.DeleteAll();
}
void Update()
{
passScore = PlayerPrefs.GetInt("pass");
passScore2 = PlayerPrefs.GetInt("pass2");
passScore3 = PlayerPrefs.GetInt("pass3");
}
原始Int是静态Int。
void Start()
在每次更改场景且脚本处于活动状态时运行。
只有当游戏真正开始时,你才能删除所有玩家的偏好。
我会这样做:创建一个新的空对象,附加一个脚本。
在脚本中,键入以下内容:
private void Awake()
{
DontDestroyOnLoad(this.gameObject);
PlayerPrefs.DeleteAll();
}
别忘了把脚本附加到一个空的游戏对象上,并删除你之前做过的事情(删除你删除玩家偏好的空白开始(。
编辑:我忘了说这是干什么的!很抱歉即使切换场景,DontDestoryOnLoad
也会使对象在层次中保持不变。当脚本唤醒时(即,当它第一次被看到时(,Awake
位自动运行。这两者结合在一起,使得PlayerPrefs.DeleteAll()
函数只运行一次,即在游戏开始时。切换场景并不重要。