Chỉ xử lý một số tài nguyên nhất định trong XNA?


13

Trình quản lý nội dung trong XNA 4.0 chỉ có một phương thức Unload () hủy tải tất cả các tài sản.

Tôi muốn có một số Tài sản "toàn cầu" luôn được tải, nhưng sau đó tôi muốn Tài sản theo cấp độ sẽ được dỡ khi cấp thay đổi.

Tôi có nên tạo Phiên bản thứ hai của Trình quản lý nội dung như một phần của Lớp Level.cs không? Hoặc tôi nên sử dụng Game.Content và sau đó gọi .Dispose trên Tài sản tôi tải? Hoặc tôi nên tạo Trình quản lý nội dung của riêng mình trên đầu hàm ReadAsset như được nêu ở đây ?

Câu trả lời:


12

Tạo một ví dụ thứ hai của ContentManager.

Bạn không bao giờ nên Dispose()tải những thứ bạn tải xuống từ Trình quản lý nội dung (sử dụng triển khai mặc định), vì các trường hợp này được chia sẻ và sử dụng lại.

Tạo phiên bản ContentManager của riêng bạn là loại trực giao. Dù bằng cách nào, bạn sẽ tạo một phiên bản ContentManager thứ hai (hoặc một lớp có nguồn gốc từ nó). Vì vậy, nếu việc triển khai hiện có phù hợp với mục đích của bạn - thì hãy sử dụng nó, nếu không thì ghi đè lên những gì bạn muốn thay đổi.

Tất nhiên, nếu trò chơi của bạn tương đối nhỏ - thì sẽ không có vấn đề gì nếu bạn chỉ sử dụng một Trình quản lý nội dung và không bận tâm đến việc tải nội dung giữa các cấp.


5
+1 và một lời nhắc nhở bản thân tôi liên kết ở đây vào lần tới khi ai đó cố gắng cho tôi biết mô hình singleton tuyệt vời như thế nào đối với người quản lý tài sản.

Tôi cũng tìm thấy Bản demo Quản lý trạng thái trò chơi tại Trang web XNA sử dụng chính xác điều này (1 Trình quản lý nội dung toàn cầu và lần thứ 2 trên Màn hình cần nó). Không trực quan lắm, nhưng nó sẽ làm được :)
Michael Stum
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.