1

我使用 C#(使用 XNA 4 和 MonoGame)。Load()我使用内容管理器的方法加载资产(纹理、音频) 。当不再需要这些资产时,我如何才能正确地Unload()从内存中获取它们?

我假设一旦对加载资产的所有引用都被覆盖(或设置为 null),垃圾收集器会自动删除这些资产。这是正确的还是由于它们是通过 ContentManager 加载的资产仍然被锁定?

是否需要调用 'ContentManager.Unload()' 来释放特定 CM 的资产?

4

1 回答 1

4

是的,如果您希望内容管理器中的资产完全从内存中卸载,则有必要调用Unload(). 除了清除内容管理器的内部缓存(保存对您已加载的所有内容的引用)之外,它还将调用Dispose()任何实现IDisposable.

请注意,aContentManager维护资源的内部缓存的原因是因为两次加载相同的资源实际上并没有两次加载相同的资源:第二次,它只会将缓存的对象引用交给您。

于 2013-11-11T18:40:56.213 回答