【问题标题】:Is displaying the tiles of a 2d game for an editor in seperate pictureboxes even a good idea? [closed]在单独的图片框中为编辑器显示 2d 游戏的图块是个好主意吗? [关闭]
【发布时间】:2014-05-23 06:10:19
【问题描述】:

所以我正在为这款名为“Cataclysm”的小游戏构建一个地图编辑器。除了编码(因为这不是真正的问题),为每个图块使用图片框是个好主意吗?

您还有其他想法可以让我和我的 PC 上的事情变得更轻松吗? (使用 Visual Studio 移动或处理地图文件的 12x12 象限的所有 144 个图片框时,速度明显下降)

我的另一个想法是将图片组装为地图,然后将其填充到单个图片框中,但是我如何以这种方式编辑单个图块?在它上面放一个光栅,然后检查单击时鼠标在哪个图块上?

感谢您的建议!

编辑: 这是一个编辑器 - 不是一个单独的游戏!

【问题讨论】:

  • 是设计器变慢了,还是应用程序本身变慢了?
  • 您使用的是哪个框架?窗体? WPF? XAML?
  • 可能不是最好的主意。显然有很多方法可以做到这一点,但如果你让它与图片框一起使用,请考虑保持这种方式,直到你觉得游戏中没有其他更重要的了。 (也不可能提出任何“对你来说更容易”的建议,因为不清楚你的经验和时间是多少)
  • 我正在为此使用 Winforms。设计器是减慢速度的东西,应用程序在调试模式下表现得很好。

标签: c# map 2d tiles


【解决方案1】:

不,我会说你最好使用单独的图片框控件,如果你能提供帮助的话。这些控件中的每一个都会消耗资源,并且过多会降低您的应用程序的速度。

每个进程限制为 10,000 个窗口句柄。在这一点上,您还远未达到或超过该限制。但是,如果您决定在游戏的更高版本中(显着)放大地图怎么办?此外,任何地方接近 的极限都不是好的设计。还有一个 32k 的系统范围限制,因此一个应用程序使用的句柄越多(最多 10k 限制),其他应用程序可用的句柄就越少。

只需将表单的客户区用作绘图表面(您根本不需要任何图片框)。编写代码将其划分为适当的部分,然后在每个部分中绘制图像。处理表单的 MouseClick 事件,进行点击测试以查看用户点击的位置,并将其与您的某个段相匹配。

【讨论】:

  • 这不是我的游戏。我只是在搞乱编辑地图和存档文件,所以我不担心它会变大。但是谢谢,我根本没有考虑过实际使用表单本身!
【解决方案2】:

我正在使用的 2D 等距游戏使用单个图片框。我所做的是获取鼠标 X 和 Y 的位置并将其除以瓷砖的高度和宽度。将该数字转换为 int(丢弃十进制值)。那应该给你确切的瓷砖。但是,如果您不使用图片框本身的鼠标位置,您可能需要稍微使用一下公式。因此,在鼠标单击事件中,您将获得用户单击的磁贴,然后在该位置绘制新的磁贴图像。

如果您想使用 C# 制作游戏,为什么不使用 XNA?这是一个非常好的框架,你会得到很多关于它的教程。

http://en.wikipedia.org/wiki/Microsoft_XNA

http://www.microsoft.com/en-za/download/details.aspx?id=23714

http://xnaresources.com/default.asp?page=TUTORIALS

【讨论】:

  • 这里也放一下,我不是在做游戏——我是在做一个编辑器。不过我会研究一下 XNA!
猜你喜欢
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
相关资源
最近更新 更多