我将开始在 Qt 中编写基于 2D 图块的游戏,并阅读 QGraphicsScene 和 QGraphicsView 类,这些类旨在显示和处理大量 2D 对象。
我的问题是,使用 QGraphicsScene 创建一个包含大量图块的世界是否可行?我可以一次性添加整个世界吗?还是我应该尝试实施一些措施来限制该区域?我读过 QGraphicsScene 可以处理“数千个项目”,但是 2D 图块地图可以很容易变得非常非常大(200x200 个图块?不是那么多,但这已经是 40,000 个对象了,这已经很多了)。
该地图也将是几乎静态的,因此可以将其绘制为一个大像素图,但这确实阻止您使用 QGraphicsScene 中的所有奇特的东西,例如处理独立项目上的鼠标点击等。除此之外,我'我将绘制不会与图块网格对齐的玩家、NPC 等。是否有一些优化的东西可以使用大量静态对象和它们之上的一些动态对象?
使用 QGraphicsScene 和 QGraphicsView 是一个好主意吗?还是我应该尝试在 Qt 中寻找替代方案,或者可能是一个不同的、更面向游戏的库?
提前致谢
您应该使用 QGraphicsView。
The 40,000 筹码 http://doc.qt.io/qt-5/qtwidgets-graphicsview-chip-example.htmlQt 文档是您仔细检查的最佳示例。它处理大量元素的复杂性,以多种比例绘制它们等等。
玩一下这个例子,你会发现,如果你缩小,你可以在任何视图中选择和拖放多个芯片,或者你可以放大到足以看到照片上的一些文本,那么所有的芯片实际上组成了一张大照片。单独的芯片。理解每个部分需要时间,但这是一个非常值得研究的透彻示例。
In the 芯片.cpp http://doc.qt.io/qt-5/qtwidgets-graphicsview-chip-chip-cpp.html源代码中,它展示了如何通过使用基于样式选项中存储的转换的“LevelOfDetail”或 lod 变量 switch 语句来快速运行。
Qt Graphics View 已经过优化,可以完成您在问题中讨论的许多事情,但需要一段时间才能理解如何处理它。
如果您仍然对要使用的地图的大小有疑问,我会将图块布局存储在硬盘上,并在需要时加载您需要的图块布局,并将不需要的图块布局从场景中删除,如下所示必要的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)