Programaticamente carregando fontes, texturas e mídia no XNA


7

Até agora, no meu jogo de ritmo, tenho usado o Content Pipeline do XNA para carregar recursos estáticos no meu aplicativo (vídeos, efeitos sonoros, etc.). No entanto, no caminho, eu gostaria de permitir que os usuários criassem seus próprios temas, além de criar gráficos personalizados para as músicas que eles gostariam de tocar. Existe alguma maneira de carregar, digamos, um objeto Texture2D ou Video, do disco sem usar o Pipeline de conteúdo, dado um caminho de arquivo para o recurso?

EDIT : Mesmo que este seja XNA, eu estou direcionando apenas o Windows (sem Zune, WP7 ou Xbox 360).

Respostas:


4

Use o Texture2D.FromFilemétodo; para o primeiro parâmetro, especifique GraphicsDevicequal é uma propriedade da Gameclasse (portanto, de dentro de um método da classe Game, basta usar this.GraphicsDevice).

Infelizmente, apenas Texture2Dobjetos podem ser carregados dessa maneira; um Videoobjeto não é tão fácil de carregar .


Caramba, carregar áudio e vídeo em tempo de execução será fundamental no meu aplicativo no futuro, portanto, isso é uma má notícia.
precisa saber é o seguinte

11
Nem toda a esperança está perdida! Veja a segunda resposta à pergunta vinculada; parece que você pode compilar e executar um vídeo ou áudio em tempo de execução, com o XNA 3.1. stackoverflow.com/questions/1949264/…
Ricket 5/10

@Ricket Sim, não posso obrigar os usuários a baixar o GS apenas para poder compilá-los, por isso ainda estou preso. Estou tentando analisar o DirectShow VideoPlayer, mas é antigo e exigente.
ThatsGobbles

Mas ... eles precisam ter o XNA instalado, seja 3.1 ou 2.0, certo? Qual é a diferença?
Ricket 6/10/10

O XNA Runtime é sempre necessário, sim (se bem me lembro). No entanto, esse método MSBuild exige que todo o Game Studio seja baixado no computador do usuário (e o GS 4.0 tem cerca de 400 MB de ISO).
ThatsGobbles

3

É perfeitamente possível executar o processo de criação de conteúdo em tempo de execução usando o MSBuild. O exemplo a seguir mostra basicamente como fazê-lo: http://creators.xna.com/en-GB/sample/winforms_series2 . Este exemplo em particular usa formulários do Windows, mas não há nada que o impeça de fazer a mesma coisa em um jogo real.

O grande problema é que o conjunto do pipeline de conteúdo (onde estão todos os processadores / importadores / tarefas de construção necessárias para a construção) não é incluído no XNA Framework redistribuível. Isso significa que, para realmente criar e / ou carregar conteúdo personalizado, seus usuários precisariam instalar qualquer versão do XNA Game Studio com a qual seu jogo foi desenvolvido. Eles nunca precisariam realmente usar nenhum dos softwares incluídos nele, mas precisariam instalá-lo. Dependendo do seu jogo e de quem você espera criar e usar conteúdo personalizado, isso pode ou não ser aceitável.


Se ao menos não fosse necessário instalar o XNA GS no computador do usuário, isso seria perfeito.
ThatsGobbles

Certamente é lamentável. Lembro-me de ter visto rumores há algum tempo (anos) sobre a equipe do XNA querer colocar o material do Content Pipeline no redist, mas isso não aconteceu nas últimas versões e parece improvável que isso aconteça logo, dado o foco atual em não- Plataformas de PC em que o pipeline não funcionará de qualquer maneira.
Mikthom 6/10/10

Faz sentido, embora sim, é meio ruim para jogos XNA apenas para PC.
ThatsGobbles

1

Alguns dos processadores de conteúdo expõem classes que fazem muito trabalho pesado, por exemplo, capturam um Stream e produzem um objeto intermediário (como os dados necessários para construir uma malha, mas não um objeto Mesh real). Você poderá fazer algum processamento adicional para transformar o objeto intermediário no objeto final que deseja consumir. Algumas dessas classes podem até cuspir o objeto final para você. Varia de acordo com o tipo de conteúdo. Sugiro pesquisar nos processadores de conteúdo os tipos de conteúdo relevantes e ver se algo útil é exposto. Pode ser necessário reescrever alguns bits você mesmo (Reflector é seu amigo), mas pode valer a pena o esforço se você realmente não quiser usar ativos "pré-compilados".


Você tem alguma recomendação e / ou links para exemplos? Parece que o único tipo de mídia que me falta a capacidade de importar agora é o vídeo, e o IIRC é um dos dois que é considerado inviável carregar manualmente.
precisa saber é o seguinte
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.