Windows窗体 - 如何保存和加载游戏?

时间:2013-05-09 19:43:37

标签: c# winforms

我开始使用Windows窗体(不使用XNA)在C#中编写游戏,我试图弄清楚如何保存/加载。

现在我所拥有的只是主要表单,一些用户控件和一个单独项目中的一个类。

我找了一个体面的教程,这是我发现的最好的:

http://www.codeproject.com/Articles/1789/Object-Serialization-using-C

此方法适用于Windows窗体游戏吗?或者我有更好的方法吗?

另外,如果这是最佳路线,我如何在一个保存文件中保存来自几个不同类的数据,然后读取数据?

不幸的是我没有任何相关的代码。任何提示将不胜感激。

2 个答案:

答案 0 :(得分:3)

序列化连续保存类实例计数,然后保存类实例,然后反序列化类计数及其实例。 一种写作方法和一种阅读方法 使用格式化程序进行序列化和去序列化.. 保存所有当前状态包括生命计数和游戏状态,玩家所在地和其他属性。 例如看到这个:
阅读:

IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(op.FileName, FileMode.Open, FileAccess.Read, FileShare.Read);
FCnt = (int)formatter.Deserialize(stream);
for (int i = 0; i < FCnt; i++)
{
   facility[i] = (Facility)formatter.Deserialize(stream);
}
stream.Close();

写作:

IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream(FN, FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, FCnt);
for (int i = 0; i < FCnt; i++)
{
formatter.Serialize(stream, facility[i]);
}
stream.Close();

答案 1 :(得分:2)

如果您想为游戏序列化数据,可以考虑创建一个&#34;州&#34;上课并将要保存的信息放在那里。然后,您可以在一次命中中序列化状态对象的实例。

相关问题