Как работает XNAs Content.Load‹Texture2D›?

Мне просто любопытно, действительно ли он загружает актив в память каждый раз, когда он вызывается, или если он ищет его, находит, загружен ли он, а если он не загружен, он загружает его один раз и просто сохраняет ссылки, поэтому во второй раз он вызывает его просто захватывает ссылку на него?


person meds    schedule 22.11.2010    source источник


Ответы (1)


Он отслеживает, что уже было загружено, и просто возвращает ссылку на тот же объект, если он был загружен ранее (это для каждого ContentManager). Это относится ко всему контенту, а не только к текстурам.

В результате вы можете просто вызывать Load всякий раз, когда вам нужен Контент, не задумываясь о дублировании. Другим результатом является то, что вы никогда не должны использовать Dispose содержимого, загруженного из ContentManager (вместо этого используйте ContentManager.Unload).

Если вам нужны подробности, посмотрите на этот вопрос и ответьте.

person Andrew Russell    schedule 22.11.2010
comment
О, спасибо, это был ответ, на который я надеялся. Раньше я использовал свой собственный контент-менеджер, который работал таким же образом, поэтому я просто предположил, что это относится и к XNA. Затем я запаниковал, потому что понял, что это всего лишь предположение, и я не знал наверняка, сохраняет ли он ссылки или загружает дубликаты ресурсов. - person meds; 22.11.2010