它是DrawableGameComponent创建按钮的错误工具吗

本文关键字:错误 工具 按钮 DrawableGameComponent 创建 它是 | 更新日期: 2023-09-27 18:25:33

我正在制作一款基于游戏状态管理模式的游戏。我在第二页上做了20个按钮,让用户选择级别。

 LevelButton : TexturedDrawableGameComponent

Inside LoadContent()按钮被创建并添加到GameComponent集合中。如果我做对了,GameComponent是一种全局集合,所以当用户从第4页返回到第2页时,应用程序将再添加20个按钮。

我添加了一个循环,从集合中清除所有LevelButtons,但这似乎是错误的。

DrawableGameComponent是否是错误的按钮创建工具

它是DrawableGameComponent创建按钮的错误工具吗

是。

CCD_ 1及其友元是XNA框架的可选位。把他们当作帮手。简单的示例实现。

如果您需要更多或不同的功能,您必须用自己的实现来替换它们!

在这种情况下,您想要的似乎是一个"Button"对象(像您的LevelButton),可能有UpdateDraw这样的方法。

然后你想要某种"按钮容器"对象,它可以容纳所有这些按钮,并在屏幕上绘制和更新它们。但当他们离开屏幕时,不要对他们做任何事情。

(你可以创建自己的GameComponentCollection实例来管理它,并继续使用游戏组件。但你仍然必须提供自己的绘制/更新/加载/卸载/初始化逻辑。Game.Components的逻辑是Game内部的,不可重复使用。我建议只使用List-保持简单!)

创建多个集合的替代方案——即从全局集合中添加和删除(或禁用/启用)组件——非常丑陋,而且容易出错。不要这样做。

我认为运行它并没有错。

也许你可以用几种更优雅的方式来处理这个问题,或者改进你的处理方式……但问题是它必须运行。

也许你在点击按钮时试图删除它,这会给你带来问题,因为该按钮正在更新。

当级别选择屏幕变为非活动或被破坏时,是时候移除按钮了。

当然,你可以创建一个按钮集合类来管理按钮列表,然后你只需要启用/禁用或删除一个DrawableGameComponent,这在其他屏幕上很有用。