C# Monogame/XNA输入侦听器或单击执行功能?

C# Monogame/XNA输入侦听器或单击执行功能?,c#,xna,monogame,C#,Xna,Monogame,我正在为我的游戏创建一个菜单系统,并尝试制作按钮,以便在创建时,我可以传递一组指令(或函数)来执行单击事件 我有一个名为ChangeScreen的函数,它接受enum参数,Screen,我希望能够将此函数传递到button listen事件中,如下所示(伪代码传入): menuButtons.Add(新的菜单按钮(ChangeScreen(Screen.Settings)、纹理、悬停纹理、位置)) 然后我会枚举菜单按钮,并调用每个按钮的更新和绘制方法。我喜欢这个想法,它似乎比将每个MenuBut

我正在为我的游戏创建一个菜单系统,并尝试制作按钮,以便在创建时,我可以传递一组指令(或函数)来执行单击事件

我有一个名为
ChangeScreen
的函数,它接受
enum
参数,
Screen
,我希望能够将此函数传递到button listen事件中,如下所示(伪代码传入):

menuButtons.Add(新的菜单按钮(ChangeScreen(Screen.Settings)、纹理、悬停纹理、位置))

然后我会枚举
菜单按钮
,并调用每个按钮的
更新
绘制
方法。我喜欢这个想法,它似乎比将每个
MenuButton
分配给它自己的变量更有效,而不是编写if语句专门检查每个按钮

不过,这不是我想要的唯一用例。如果可能的话,我希望能够通过以下方法:

添加(新的菜单按钮(新方法(){variableToSet=1;},纹理,悬停纹理,位置))


我试着使用
操作
,但我不知道如何正确地进行操作。是否有可能,或者是否有类似的解决方案?

因此,我找到了一个尽可能接近的解决方案

在我的
菜单按钮中
对象

public delegate void ButtonEventHandler(object sender, EventArgs e);
public event ButtonEventHandler onClick;
当我想在
Update()
中检查是否有单击时:

然后,当我创建每个按钮时,它看起来像这样:

MenuButton button = new MenuButton();
button.onClick += MethodToExecute;
menuButtons.Add(button);
MethodToExecute(objectsender,EventArgs e)
包含我希望按钮执行的任何操作


然后我只是简单地循环通过
菜单按钮
,根据需要更新并绘制每个按钮

所以你想在按下UI元素时创建某种回调?是的,但我想在创建菜单按钮时传递一个全新的函数。我不认为你问的很清楚。也许试着改写你的问题,你可能会得到更多的答案。
MenuButton button = new MenuButton();
button.onClick += MethodToExecute;
menuButtons.Add(button);