像这样的类是必要的吗?
public class ContentCache
{
private readonly ContentManager _content;
private readonly Dictionary<string, Texture2D> _textureCache = new Dictionary<string, Texture2D>();
public ContentCache(ContentManager content)
{
_content = content;
}
public Texture2D Load(string assetName)
{
Texture2D texture = null;
if (!_textureCache.TryGetValue(assetName, out texture))
{
_textureCache[assetName] =
texture = _content.Load<Texture2D>(assetName);
}
return texture;
}
}我很好奇ContentManager.Load<Texture2D>()是否在内部实现了它自己的缓存。我不想重复缓存东西。
注意:
我们的XNA游戏是2D的,可以在WP7和Windows上运行,也可以在使用MonoGame的iOS和OSX上运行。
MonoGame在Windows中的功能可能与XNA有所不同,但我可能可以浏览它的源代码来找出答案。
发布于 2011-10-21 06:07:34
这个类是不必要的。ContentManager代表您执行此操作。
来源:
http://forums.create.msdn.com/forums/p/31383/178975.aspx
注意:
就Mono而言...我确信这些实现可以很好地相互映射,但在这种情况下我不能确定。
此外,如果您想要重新加载资产,您可以使用额外的ContentManager,然后将其丢弃。
发布于 2014-07-08 10:21:53
需要注意的是,Mono类ContentManager现在也支持缓存。
在2012年的某个时候添加。将来可以用来作参考。
发布于 2011-10-21 06:52:34
只需在第一个LoadContent方法中缓存需要缓存的内容,使用一些预先缓存的字符串数组,如下所示:
// Preload assets
static readonly string[] preloadAssets =
{
"Textures\\texture1",
};
protected override void LoadContent()
{
foreach ( string asset in preloadAssets )
{
Content.Load<object>(asset);
}
}像这样的事情可能会发生!
https://stackoverflow.com/questions/7842842
复制相似问题