【问题标题】:Saving Player's Position is not working in unity保存玩家的位置不能统一工作
【发布时间】:2020-06-09 03:44:48
【问题描述】:

我正在统一制作游戏,它几乎完成了,但我在保存和加载玩家位置时遇到了问题。我正在使用自定义二进制文件方法。每当我点击保存按钮,然后加载游戏时,它会显示一秒钟的保存位置,然后再次显示我的加载位置。我希望我的球员保持在储蓄位置。 我使用 Brackeys 教程来做到这一点。

public void SaveGame()
{
    PlayerPositionData save = new PlayerPositionData();
    save.position[0] = transform.position.x;
    save.position[1] = transform.position.y;
    save.position[2] = transform.position.z;
    SavingSystem<PlayerPositionData>
        .Save(Application.persistentDataPath + "/file10.pqr", save);

}

public void LoadGame()
{
    PlayerPositionData data = SavingSystem<PlayerPositionData>
        .Load(Application.persistentDataPath + "/file10.pqr");
    Vector3 position;
    position.x = data.position[0];
    position.y = data.position[1];
    position.z = data.position[2];
    transform.position = position;
}

[System.Serializable]
public class PlayerPositionData
{
    public float[] position;

    public PlayerPositionData()
    {
        position = new float[3];
    }
}

保存和加载功能在 PlayerPosition 类中,它是我的播放器的一个组件。我在控制台中没有收到任何错误。没有一个。此外,在不同的点上,我使用 debug.log 打印我的位置,因此我确信我的位置正确保存、加载和分配到玩家的位置。但是一秒钟后,它又让我回到了加载游戏的位置。其他可以正确保存和加载的内容,例如子弹数量、生命值等,但玩家的位置存在问题。

另外,我制作了一个单独的加载和保存函数,其中二进制格式化程序和流工作正在进行。谁能帮我?我是一名学生,我必须在本周提交这个项目。我正在做这个 一个星期以来的位置问题,但我不知道如何解决这个问题。

【问题讨论】:

  • 这段代码在你的播放器上运行?只是为了检查..
  • 是的,它运行...
  • 您的播放器的启动函数中是否有一些代码可以重置其位置?
  • 首先,不。其次,即使我在保存并没有退出游戏后点击加载按钮(因为在这种情况下,没有调用启动函数),它仍然会给出同样的错误。退出后,然后点击加载按钮也会出现同样的错误。
  • 我没有问它是否运行@KhubaibAlam,我问它是否在你的播放器上运行,如果不是,它会记住它所在对象的位置并解释行为

标签: unity3d


【解决方案1】:

我找到了我的问题的答案。您应该检查编辑>>项目设置>>物理上的“自动同步变换”的勾号。它将允许您通过编码设置游戏对象的位置。

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多