Winforms 如何在Monogame中从WindowsForms调用方法?
嗨,我现在正在做一个项目。我的主窗体是一个窗体,每当我点击一个按钮,monogame程序就会启动。这很有效 现在我在主窗体中创建了一个方法,我想把bool传递给monogame窗体 主要形式方法:(如果复选框被选中,单游戏应该画一条天际线) 单一游戏检查:Winforms 如何在Monogame中从WindowsForms调用方法?,winforms,methods,monogame,Winforms,Methods,Monogame,嗨,我现在正在做一个项目。我的主窗体是一个窗体,每当我点击一个按钮,monogame程序就会启动。这很有效 现在我在主窗体中创建了一个方法,我想把bool传递给monogame窗体 主要形式方法:(如果复选框被选中,单游戏应该画一条天际线) 单一游戏检查: if (skyCheck() == true) { DrawSky(); } 这给了我一个名称“skyCheck”在当前上下文中不存在。我制作了一个控件,将单游戏嵌入表单中,这样就不必
if (skyCheck() == true)
{
DrawSky();
}
这给了我一个名称“skyCheck”在当前上下文中不存在。我制作了一个控件,将单游戏嵌入表单中,这样就不必运行单独的程序。它不是你所看到的普通嵌入式游戏,它只给你一个图形设备,没有更新或游戏方法。这是一个真正的嵌入游戏 这不是问题的根源,但它可以帮助您解决问题,并使您的程序更好
是源代码,自述文件中包含一些关于如何使用它的简要文档将表单的引用传递给Game1的构造函数:
public class Game1 : Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
//Change the Form1 to the name of the form class.
Form1 form;
//...
public Game1(Form1 form)
{
this.form = form;
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
//...
// I will assume the DrawSky() should be called in Draw.
protected override void Draw(GameTime gameTime)
{
//...
if (form.skyCheck()) // the "== true" is redundant.
{
DrawSky();
}
//...
}
}
以下代码通常位于Program.cs
中,但作为窗口窗体应用程序,此代码将以启动游戏的形式出现:
game = new Game1(this); // where "this" refers to the current form
game.Run();
请注意混合Windows窗体和MonoGame的注意事项:
可以启动另一个线程让游戏运行(从而绕过前两个警告),但是,两个线程之间的所有通信必须是线程安全的。布尔赋值和整数赋值(32位进程小于32位,64位进程小于64位)保证了线程安全
两个线程都需要退出协调。您发布的代码与您的问题无关。听起来好像您正在尝试使用skyCheck()的另一个类中声明skyCheck()。你需要提供更多的信息,你希望有人帮助你。
game = new Game1(this); // where "this" refers to the current form
game.Run();