【问题标题】:XNA best way to load 2d textures; monogameXNA 加载 2d 纹理的最佳方式;单人游戏
【发布时间】:2013-07-14 10:47:17
【问题描述】:

我正在制作一个测试 xna 游戏作为学习练习,我有一个关于使用 2d 纹理的小问题。基本上,游戏是从文本地图文件中获取的不同“图块”的网格。我基本上只是在初始化关卡时解析文件并创建不同瓷砖类型的矩阵。关卡本质上是一桶墙砖和钉子。所以本质上,有很多墙砖和多个钉砖,然后是很多空砖。但是,有四种类型的墙砖和尖刺纹理可以覆盖不同的方向。

我的问题是为每个图块加载纹理的最佳方法是什么?我是否为每个图块加载单独的纹理?即当我创建一个图块时,将它传递给我可以同时绘制和加载纹理的 texture2d。这似乎是一个好方法,但是我必须单独加载每个瓷砖纹理,这似乎很浪费。

我能想到的另一个选择是在 tile 结构中使用静态纹理,然后简单地将此纹理加载为具有不同墙壁和尖峰的 tile 地图集。这样我只加载一个纹理,然后在绘制时我只是将一个矩形移动到精灵中适当的瓷砖区域。

我不确定从性能角度来看,这些方法中的哪一种是最佳的,或者是否有替代方法?

提前致谢

【问题讨论】:

  • 定义“最佳”?您想完全节省内存、提高帧速率、减少开发时间还是其他什么?另外,我注意到您在这里发布了完全相同的问题,我应该在两者上发布完全相同的答案吗? gamedev.stackexchange.com/questions/59109/…

标签: xna 2d xna-4.0 monogame texture2d


【解决方案1】:

内容管道的美妙之处在于,当你这样做时

Content.Load<Texture2D>("sometexture");

它不会每次都加载 Texture2D。内容管道足够智能,可以加载一次并每次都为该纹理发送回相同的 Texture2D。如果你制作静态结构实际上会更糟。

【讨论】:

  • 好的,很高兴知道这一点。我不喜欢我的精灵表实现,因为它涉及为我绘制的每个图块存储一个源矩形。加载并传递纹理要“更好”得多,所以这就是我所采用的。谢谢
猜你喜欢
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多