2014-11-20 20 views
0

我在我的游戏世界中有一些区域,用于根据区域的可见性和与用户的接近度对可渲染区域进行分区。如何防止在XNA Game Studios(设计)中加载纹理的副本

为简单起见,同样如此。

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

当前,此结构具有_texture作为Zone类的成员。现在,如果我需要渲染20个区域。我将不得不加载20个可能是相同纹理的副本。

从我的角度来看,这似乎是非常低效的记忆智慧。

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

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

回答

1

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

+0

非常好!这节省了我大量的时间!非常感谢你! – 2014-11-20 20:56:14