多次回到以前的形式
本文关键字: | 更新日期: 2023-09-27 18:29:21
我正在用c#制作一个有很多关卡的游戏,每次你输了,我都想转到一个给你很多选项的表单,包括"重试"
我知道如何访问该表单并重新加载您失败的级别,但我想知道是否有任何方法可以只创建一次选项表单,以及每次单击Retry
重新加载PREVIOUS表单时。
您拥有的众多选项之一是使用Singleton模式。这是一个非常快速和过于简化的例子,但你可以这样做:
public class OptionsForm : Form
{
private static OptionsForm _instance;
public static OptionsForm Options
{
get
{
if (_instance == null) _instance = new OptionsForm();
return _instance;
}
}
private int ActualLevel; //variable to hold the level to "go back to/retry"
public void ShowOptions(int actualLevel)
{
ActualLevel = actualLevel;
//do any processing required
Show(); // or ShowDialog(); depending on your needs
}
}
然后你会做这样的事情:
public void OnLevelFailed() //whatever you call when the user loses the level
{
OptionsForm.Options.ShowOptions(thisLevel);
}
查看C#中对象的作用域,例如转到MSDN。这个网页很古老,但能教授好的概念。
你基本上需要设置你的选项表,以保持在范围内。一种方法是将该表单的对象设置为静态。然后你可以随心所欲地重复使用它。
这增加了很多复杂性。您必须捕获Form.Clossing事件,然后取消关闭,而不是Hide
处理表单。完成后,您可能需要手动处理表单的Dispose
。
如果你只想这样做是因为它节省了.NET每次创建表单的工作量,那么不要这样做。NET非常擅长创建表单,并不介意这样做。做这一切的唯一好理由是,每次打开表单时,用户设置的任何选项都保持不变,而且有一些方法被认为是更好的编码实践,例如模型视图控制器-其概念是将数据(用户的选项)与数据视图(显示这些选项的表单)分开。
从编程游戏开始是雄心勃勃的。祝你好运