为什么 Unity 不修改我的玩家位置?

问题描述 投票:0回答:1

我正在制作一个 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,玩家只是似乎无法读取变量。

对此的任何见解将不胜感激,因为这是阻碍我继续游戏进展的最后一个大障碍。

c# unity-game-engine 2d topdown
1个回答
0
投票

每当您执行 SceneManager.LoadScene(lastLevel) 时,您的场景/值都会重置为其原始值,在读取值后重新加载场景是没有意义的,因为它们只会被重置。

方法是先加载场景,然后加载设置/定位

© www.soinside.com 2019 - 2024. All rights reserved.