我正在使用c#代码开发一个统一的保存系统。我怎样才能获得这样的储蓄制度。
在我的空GameObject中,我有一个脚本,如下所示:
Counter.cs
public int counter;这都在我的Counter.cs上。现在,如果它在GameObject中,我如何保存和获取它。我只想把柜台放在Counter.cs里面。
我能这样做吗。
SaveAndLoad.cs
public GameObject SaveCounter;
public void Save(){
PlayerPrefs.SetInt("Player Score", SaveCounter);
}
public void Load(){
PlayerPrefs.GetInt("Player Score"));
}我能这样做吗?
发布于 2017-02-01 15:51:13
回答你的问题
您不应该在PLAYER PREFS中存储与游戏状态相关的东西
相反,您可以使对象序列化:
[Serializable]
public class GameState
{
int m_Score;
public int Score
{
get { return m_Score; }
set { m_Score = value; }
}
}然后使用BinaryFormatter和某个助手对象将这些数据序列化为一个文件:
public void StoreGameState(GameState state)
{
using (BinaryWriter writer = new BinaryWriter(File.OpenWrite("./gamestate.bin")))
{
var formatter = new BinaryFormatter()
formatter.Serialize(state, writer);
}
}
public GameState RestoreGameState()
{
using (BinaryReader reader = new BinaryReader(File.OpenRead("./gamestate.bin")))
{
var formatter = new BinaryFormatter()
return (GameState)formatter.Deserialize(reader);
}
}然后将GameState添加到空的GameObject中:
public GameState CurrentProgress;当您想要保存或加载时,请阅读我发布的两个方法:StoreGameState和RestoreGameState。
但是,如果您真的喜欢在PlayerPrefs中存储这类数据,那么仍然可以这样做:
public GameObject SaveCounter;
public void Save(){
PlayerPrefs.SetInt("Player Score", SaveCounter.GetComponentn<Counter>().counter);
}
public void Load(){
SaveCounter.GetComponentn<Counter>().counter = PlayerPrefs.GetInt("Player Score"));
}这不是任何人推荐的。
https://stackoverflow.com/questions/41983618
复制相似问题