Ваш вопрос был бы намного яснее, если бы вы опубликовали какой-то код, показывающий, что вы сделали, но я думаю, что понимаю, поэтому сделаю это для вас. Я предполагаю, что у вас есть что-то вроде этого:
public abstract class GameScreen
{
protected Texture2D Texture { get; set; }
}
public class TitleScreen : GameScreen
{
}
public class GameplayScreen : GameScreen
{
}
И где-то еще в вашем коде вы делаете что-то вроде этого:
var titleScreen = new TitleScreen { Texture = Content.Load<Texture2D>("something") };
var gameplayScreen = new GameplayScreen { Texture = Content.Load<Texture2D>("something") };
Проще говоря, в этом коде MonoGame будет загружайте текстуру «что-то» только один раз и помещайте в кеш внутри ContentManager
. Когда один и тот же контент загружается во второй раз, ContentManager
вернет ссылку на тот же экземпляр контента.
Это фактически означает, что каждый «экран» будет нести только указатель ссылки на содержание это заботится о. Это не займет много памяти, поэтому не беспокойтесь об этом.
То, что может занять много памяти, многократно вызывает Content.Load
для загрузки различного контента. ContentManager
не будет выгружать это содержимое до тех пор, пока оно не будет удалено или выгружено явно, даже если ничто не содержит ссылки на него.
При этом очень маловероятно, что вам придется беспокоиться о каком-либо из этого материала пока ваша игра не станет намного больше. Не усложняйте вещи, пока они не станут настоящей проблемой. Вы всегда можете выполнить рефакторинг своего кода позже, если начнете замечать проблемы.