PlayerPrefs 等于 GameObject
PlayerPrefs Equal to GameObject
我正在使用 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"));
}
我可以这样做吗?
回答你的问题
你不应该在玩家偏好设置中存储游戏状态相关的东西
相反,您可以创建可序列化对象:
[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"));
}
任何人都不推荐。
我正在使用 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"));
}
我可以这样做吗?
回答你的问题
你不应该在玩家偏好设置中存储游戏状态相关的东西
相反,您可以创建可序列化对象:
[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"));
}
任何人都不推荐。