我正在制作一个 2D 自上而下的游戏,目前正在尝试实现一个检查点系统。检查点正确保存玩家所在的场景,并保存玩家的 X 和 Y 坐标。然而,重生时,玩家不会去到正确的位置,而是去到场景的重生点。这可能是一个简单的修复,因为我对游戏设计相对较新,但我已经在这个问题上坚持了至少一个月了。
我尝试了多种方法让玩家读取保存的位置。 检查点位置正确保存在 PlayerPrefs 中,并且我已经对其进行了多次测试,证明这些值已保存。
这是我的重生功能: `公共无效重生() {
string lastLevel = PlayerPrefs.GetString("savedScene");
lastCheckPointPos.x = PlayerPrefs.GetFloat("savedX");
lastCheckPointPos.y = PlayerPrefs.GetFloat("savedY");
player.transform.position = new Vector3(lastCheckPointPos.x, lastCheckPointPos.y, 0);
print("respawing");
SceneManager.LoadScene(lastLevel);
}`
起初,我尝试在单独的代码行中将玩家的单独 X 和 Y 值设置为保存的值,将 player.transform.x 设置为 savingX 等等,但这不起作用。我在网上搜索了一下,发现如果我把它作为一个新的Vector3,它应该可以工作,这是有道理的,但这也不起作用。 再次强调,问题不在于保存到 PlayerPrefs,玩家只是似乎无法读取变量。
对此的任何见解将不胜感激,因为这是阻碍我继续游戏进展的最后一个大障碍。
每当您执行 SceneManager.LoadScene(lastLevel) 时,您的场景/值都会重置为其原始值,在读取值后重新加载场景是没有意义的,因为它们只会被重置。
方法是先加载场景,然后加载设置/定位