gpt4 book ai didi

c# - Monogame/XNA 输入监听器或单击执行功能?

转载 作者:太空宇宙 更新时间:2023-11-03 15:07:08 25 4
gpt4 key购买 nike

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

我有一个名为 ChangeScreen 的函数,它接受一个 enum 参数,Screen,我希望能够传递这个函数进入按钮监听事件,像这样(伪代码传入):

menuButtons.Add( new MenuButton(ChangeScreen(Screen.Settings), texture, hovertexture, position) );

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

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

menuButtons.Add( new MenuButton(new Method() { variableToSet = 1; }, texture, hovertexture, position) );

我尝试使用 Action,但我只是不明白如何正确地执行此操作。完全有可能,还是有类似的解决方案?

最佳答案

因此,我想出了一个尽可能接近的解决方案。

在我的 MenuButton 对象中,我有

public delegate void ButtonEventHandler(object sender, EventArgs e);
public event ButtonEventHandler onClick;

当我想检查 Update() 中的点击时:

if (onClick != null && onClick.GetInvocationList().Length > 0)
{
OnClick(new EventArgs());
}

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

MenuButton button = new MenuButton();
button.onClick += MethodToExecute;
menuButtons.Add(button);

MethodToExecute(object sender, EventArgs e) 包含我希望按钮执行的任何操作。

然后我只是简单地循环遍历 menuButtons 以根据需要更新和绘制每个按钮!

关于c# - Monogame/XNA 输入监听器或单击执行功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42883140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com