如何防止在XNA游戏工作室(设计)中加载纹理的重复副本

本文关键字:纹理 加载 副本 设计 何防止 XNA 游戏 工作室 | 更新日期: 2023-09-27 18:31:12

我的游戏世界中有一些区域,用于根据可渲染区域的可见性和与用户的接近程度对可渲染区域进行分区。

为了简单起见,就是这样。

class Zone
{
   Textur2D _texture;
   public Zone(...)
   {
      _texture = Content.Load<Texture2D>("Textures''a");
   }
}

目前,此结构已_texture 区域类的成员。现在,如果我需要渲染,比如说,20 个区域。我将不得不加载 20 个可能是相同纹理的副本。

从我的角度来看,这似乎非常低效的内存。

我查看了MSDN和网络上的ContentManager(称为上面的内容)类,看起来它具有Unload()功能。让我相信它是纹理数据的集中来源,这意味着我假设的 20 个区域中的所有加载纹理都指向相同的参考纹理,并且在我调用 Unload() 时都会被处理掉。

是这样吗?或者我应该实现一个 ContentCache 来加载所有这些纹理,并让我的区域指向它们共享的集中加载的纹理?

如何防止在XNA游戏工作室(设计)中加载纹理的重复副本

是的,ContentManager 处理纹理缓存并防止不必要的重新加载。您可以在此处找到更多信息:https://stackoverflow.com/a/9870420/1141432