[英]XNA Texture2D caching
這樣的課是必要的嗎?
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上運行,也可以在iOS和OSX上使用MonoGame運行 。
MonoGame的功能可能與Windows中的XNA不同,但我可能會瀏覽它的來源以找到它。
這堂課是不必要的。 ContentManager代表您執行此操作。
資源:
http://forums.create.msdn.com/forums/p/31383/178975.aspx
注意:
就Mono來說......我確信這些實現相互之間相當完美,但我不能確定這一點。
此外,如果您想要重新加載資產,您可以使用其他ContentManager並在之后將其丟棄。
應該注意的是,Mono類ContentManager現在也可以進行緩存。
在2012年的某個時候添加。供將來參考。
只需使用一些預先緩存的字符串數組緩存第一個LoadContent方法中需要緩存的內容,例如:
// Preload assets
static readonly string[] preloadAssets =
{
"Textures\\texture1",
};
protected override void LoadContent()
{
foreach ( string asset in preloadAssets )
{
Content.Load<object>(asset);
}
}
這樣的事可能!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.