【发布时间】: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