如何在游戏开始时重置PlayerPrefs,但在加载场景时保持值



我有一个脚本,它有一个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()函数只运行一次,即在游戏开始时。切换场景并不重要。

最新更新