Lập trình tải phông chữ, kết cấu và phương tiện trong XNA


7

Cho đến nay, trong trò chơi nhịp điệu của mình, tôi đã sử dụng Đường ống nội dung của XNA để tải tài nguyên tĩnh trong ứng dụng của mình (video, hiệu ứng âm thanh, v.v.). Tuy nhiên, trên đường tôi muốn cho phép người dùng tạo chủ đề của riêng họ, cũng như tạo các thông báo tùy chỉnh cho bất kỳ bài hát nào họ muốn chơi. Có cách nào để tải say, một đối tượng Texture2D hoặc Video, từ đĩa mà không sử dụng Đường ống nội dung, đưa ra một đường dẫn tệp đến tài nguyên không?

EDIT : Thậm chí nghĩ đây là XNA, tôi chỉ nhắm mục tiêu Windows (không có Zune, WP7 hoặc Xbox 360).

Câu trả lời:


4

Sử dụng Texture2D.FromFilephương pháp; đối với tham số đầu tiên, cung cấp cho nó GraphicsDevicethuộc tính của Gamelớp (vì vậy trong một phương thức của lớp Trò chơi, chỉ cần sử dụng this.GraphicsDevice).

Thật không may, chỉ có Texture2Dcác đối tượng có thể được tải theo cách này; một Videođối tượng không phải là quá dễ dàng để tải .


Dang, tải âm thanh và video trong thời gian chạy sẽ rất quan trọng trong ứng dụng của tôi, vì vậy đây là tin xấu.
ThatsGobble

1
Không phải tất cả hy vọng là mất! Nhìn vào câu trả lời thứ hai cho câu hỏi liên kết; có vẻ như bạn có thể biên dịch và chạy video hoặc âm thanh khi chạy, với XNA 3.1. stackoverflow.com/questions/1949264/
Mạnh

@Ricket Vâng, tôi không thể buộc người dùng tải xuống GS chỉ để có thể biên dịch những thứ này, vì vậy tôi vẫn bị mắc kẹt. Tôi đang cố gắng xem xét DirectPlow VideoPlayer, nhưng nó cũ và khó tính.
ThatsGobble

Nhưng ... họ cần cài đặt XNA dù là 3.1 hay 2.0, phải không? Có gì khác biệt?
Ricket

Thời gian chạy XNA luôn luôn cần thiết, có (nếu tôi nhớ chính xác). Tuy nhiên, phương pháp MSBuild đó yêu cầu toàn bộ Game Studio phải được tải xuống trên máy tính của người dùng (và GS 4.0 là khoảng 400 MB ISO).
ThatsGobble

3

Hoàn toàn có thể chạy quy trình xây dựng nội dung trong thời gian chạy bằng MSBuild. Mẫu sau đây cho bạn thấy cơ bản cách thực hiện: http://creators.xna.com/en-GB/sample/winforms_series2 . Ví dụ cụ thể này sử dụng các hình thức cửa sổ, nhưng không có gì ngăn cản bạn làm điều tương tự trong một trò chơi thực tế.

Vấn đề lớn là lắp ráp đường ống nội dung (là nơi mà tất cả các bộ xử lý / nhà nhập khẩu / xây dựng nhiệm vụ cần thiết để xây dựng) không được bao gồm trong XNA Framework có thể phân phối lại. Điều này có nghĩa là để thực sự tạo và / hoặc tải nội dung tùy chỉnh, người dùng của bạn sẽ cần cài đặt bất kỳ phiên bản XNA Game Studio nào mà trò chơi của bạn được xây dựng. Họ sẽ không bao giờ thực sự cần sử dụng bất kỳ phần mềm nào có trong đó, nhưng họ sẽ cần phải cài đặt nó. Tùy thuộc vào trò chơi của bạn và người mà bạn muốn tạo và sử dụng nội dung tùy chỉnh, điều này có thể hoặc không thể chấp nhận được.


Nếu chỉ không yêu cầu cài đặt XNA GS trên máy tính của người dùng, thì điều này đã hoàn hảo.
ThatsGobble

Đó chắc chắn là không may. Tôi nhớ đã thấy những tin đồn cách đây một thời gian (năm) về Nhóm XNA muốn đưa nội dung Đường ống nội dung vào bản phân phối lại, nhưng nó đã không xảy ra trong một vài phiên bản gần đây và dường như không thể xảy ra sớm vì họ không tập trung vào hiện tại. Nền tảng PC nơi đường ống sẽ không chạy.
mikthom

Mặc dù có ý nghĩa, mặc dù đúng, nó hơi tệ đối với các trò chơi XNA chỉ dành cho PC.
ThatsGobble

1

Một số bộ xử lý nội dung hiển thị các lớp thực hiện nhiều thao tác nặng, ví dụ: lấy luồng và tạo một đối tượng trung gian (như dữ liệu cần thiết để xây dựng lưới, nhưng không phải là đối tượng Lưới thực tế). Bạn có thể thực hiện một số xử lý bổ sung để chuyển đổi đối tượng trung gian thành đối tượng cuối cùng mà bạn muốn tiêu thụ. Một số trong những lớp đó thậm chí có thể nhổ ra đối tượng cuối cùng cho bạn. Nó thay đổi theo loại nội dung. Tôi đề nghị đào qua các bộ xử lý nội dung cho các loại nội dung có liên quan và xem mọi thứ hữu ích đều được đưa ra. Bạn có thể phải tự viết lại một số bit (Reflector là bạn của bạn), nhưng nó có thể đáng nỗ lực nếu bạn thực sự không muốn sử dụng các tài sản "được biên dịch trước".


Bạn có bất kỳ khuyến nghị và / hoặc liên kết đến các ví dụ? Có vẻ như loại phương tiện duy nhất tôi không có khả năng nhập bây giờ là video và IIRC là một trong hai loại được coi là không thể tải thủ công.
ThatsGobble
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.