Я использую Microsoft XNA Game Studio 4.0 в качестве шаблона для моего проекта.
В этом проекте у меня есть базовый класс для всех сущностей, projectiles, и так далее, называемыйSprite
.
Я планирую использовать синглтон для обработки всех Sprite
с, поэтому мне не нужно создавать новый Sprite
каждый раз, когда он мне нужен, если он использовался ранее.
Это предпочтительнее, поскольку Sprite
s имеет поле Texture2D
среди других полей, которые могут потреблять память, если создано достаточно Sprite
s.
Вот часть моегоTexture2D
синглтон в качестве ссылки:
public static class TextureManager{
private static Dictionary<string, Texture2D> allTextures = new Dictionary<string, Texture2D>();
public static Texture2D GetTexture(string name){
if(allTextures.ContainsKey(name))
return allTextures[name];
... //Code to handle and create a new key is omitted for simplicity's sake
return newTexture; //The new texture created from the "name" key
}
}
Этот синглтон предпочтительнее простого создания нового Texture2D
из конвейера контента каждый раз, когда это необходимо.Код был получен из этого ответа .
При планировании синглтона Sprite
мне пришло в голову, что для работы синглтона на одном Dictionary
должен произойти бокс.по существу, все мои классы сущностей и снарядов унаследуют класс Sprite
.
ВОПРОС:
Является ли бокс / распаковка на одном Dictionary
более эффективным, чем наличие несколькихDictionary
с для каждого типа Sprite
?