XNA'da sadece belirli kaynakları imha etmek mi?


13

XNA 4.0'daki ContentManager'da yalnızca tüm Varlıkları Boşaltan bir Unload () yöntemi vardır.

Ben her zaman yüklü bazı "global" Varlıklar istiyorum, ama sonra seviye değiştiğinde Yüksüz olması gereken Seviye başına Varlıklar istiyorum.

Level.cs Sınıfının bir parçası olarak ikinci bir ContentManager Örneği oluşturmalı mıyım? Ya da Game.Content'i kullanmalı mıyım ve sonra çağırıyorum. Yoksa burada özetlenen ReadAsset işlevinin üstünde kendi ContentManager'ımı mı oluşturmalıyım ?

Yanıtlar:


12

Öğesinin ikinci bir örneğini oluşturun ContentManager.

Sen gerektiğini asla Dispose() bu örnekleri paylaştı ve yeniden kullanılır gibi, (varsayılan uygulamasını kullanarak) ContentManager gelen yük şeylerden.

Kendi ContentManager sürümünüzü oluşturmak biraz diktir. Her iki durumda da ikinci bir ContentManager örneği (veya bundan türetilmiş bir sınıf) oluşturacaksınız. Bu nedenle, mevcut uygulama sizin amacınıza uygunsa - kullanın, aksi takdirde değiştirmek istediğiniz şeyi geçersiz kılın.

Tabii ki, oyununuz nispeten küçükse - o zaman sadece bir ContentManager'ı kullanmanız ve seviyeler arasındaki boşaltma içeriğini rahatsız etmemeniz gerçekten önemli olmayacaktır.


5
+1 ve bir dahaki sefere biri bana varlık yöneticileri için tekil kalıbın ne kadar harika olduğunu söylemeye çalıştığında bu bağlantıyı hatırlatmam için bir hatırlatma.

Ayrıca, tam olarak bunu kullanan XNA Web Sitesinde Game State Management Demo'yu buldum (buna ihtiyaç duyan Ekranlarda 1 global İçerik Yöneticisi ve 2. bir tane). Çok sezgisel değil, ama yapacağım :)
Michael Stum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.