C# 单一游戏,地图大小增加时会出现滞后问题

C# 单一游戏,地图大小增加时会出现滞后问题,c#,arrays,performance,monogame,texture2d,C#,Arrays,Performance,Monogame,Texture2d,我在Monogame做一个小项目 不过我有一点烦恼。目前我正在游戏开始时加载纹理等,只有一次 然后我从CSV文件中绘制了一张地图,所以目前我正在绘制一张3600个瓷砖的地图,每个瓷砖的大小为32x32 要访问瓷砖,游戏必须读取纹理2D数组(数组中有1024个瓷砖)。问题是它有点安静。。它可以很容易地处理100瓷砖地图,但在这个更大的地图上它只是落后了很多 有人知道为什么会这样吗?如果需要任何代码,请务必让我知道,我会编辑我的帖子。这听起来像是一个优化问题。当然,你不需要直接绘制所有3600个地图

我在Monogame做一个小项目

不过我有一点烦恼。目前我正在游戏开始时加载纹理等,只有一次

然后我从CSV文件中绘制了一张地图,所以目前我正在绘制一张3600个瓷砖的地图,每个瓷砖的大小为32x32

要访问瓷砖,游戏必须读取纹理2D数组(数组中有1024个瓷砖)。问题是它有点安静。。它可以很容易地处理100瓷砖地图,但在这个更大的地图上它只是落后了很多


有人知道为什么会这样吗?如果需要任何代码,请务必让我知道,我会编辑我的帖子。

这听起来像是一个优化问题。当然,你不需要直接绘制所有3600个地图图块,只需要绘制玩家可以看到的图块?当它们在地图上移动时,您可以有一个事件来加载更多的分幅,并销毁看不见的分幅

因此,您需要添加一种方法来跟踪玩家可以看到的内容,并且只加载此边界内的瓷砖


想想地雷船。如果它试图在运行时将数十亿块加载到内存中,那么它将很快崩溃。相反,它只渲染玩家可以看到的块。

只提供合理范围的瓷砖怎么样?渲染看不见的平铺是毫无意义的…@CommuSoft我对C#还很陌生,所以我目前还不知道如何做到这一点。你需要找出是什么让你的代码变慢,而不是用导致代码变慢的代码来澄清你的问题。请注意,仅仅渲染10倍的平铺会使代码变慢这一简单事实是不够的——显然,在某些时候渲染更多的对象会淹没系统的一个或多个组件。在代码中添加秒表和度量(如果您有权访问探查器,则不是用户,但如果您可以获得一个,则会更好)。