我正在visual basic 2010中编写一个程序来创建一个2D滚动地图。我目前正在使用Pictureboxes,所有尺寸均为50 x 70。它从1开始,根据需要可能很容易得到1000 - 2000。它们都需要可点击。我担心它可能会使用太多资源而且运行速度太慢。任何人都可以告诉我什么是做出类似事情的最佳方法。
三江源。
答案 0 :(得分:0)
一种常见的方法是只在玩家的相机可以看到瓷砖(或您的情况下的图片框)时绘制。因此,您应首先确定填充屏幕的框数,然后计算它们是否在由矩形表示的播放器摄像头范围内。另外,你应该在玩家的视线之外稍微画一些方框(每边有1或2个额外的方框,这将在下面说明)。
当玩家移动时,移动世界的位置,而不是玩家。因此,如果玩家向左移动,则向右滚动所有区块,同时玩家精灵保持静止。现在,当玩家的位置发生变化时,您应该再次检查哪些牌位在玩家的屏幕中可见。由于您在播放器的视图之外略微绘制了其他行,因此边缘将平滑地滚动并且不会弹出'在开始时是一个常见的问题。
由于您只绘制了玩家可见的图块,因此您的游戏应该可以更高效地运行。现在可以将这些数据存储在内存中的2D数组中。将来当你拥有巨大的地图时,最好加载地图中远离播放器视图的部分,从磁盘到内存。您不想从磁盘加载地图数据,玩家可以在完全加载之前导航到该地图数据。
确切地说,要存储在内存中的地图数据有多少取决于您要发布的平台和其他约束。
此外,您可能希望查看不同的渲染库。常见的低级库是DirectX和OpenGL。这些库可直接与您的图形卡配合使用,从而大大加快渲染速度。在各种语言的基础上构建了库,但我对Visual Basic不了解。 JavaScript的一个例子是PixiJS。此外,还有全功能的游戏创建库,如Unity或虚幻引擎3。