Estou confuso sobre como os métodos do jogo são chamados e quando.
Então eu li que a sequência é:
- Inicializar
- LoadContent
- Atualizar
- Desenhar
- UnloadContent
Onde 3 e 4 são o loop do jogo, então after Update
é chamado, Draw
é chamado, então Update
, então Draw
e assim por diante. O loop do jogo (Atualização e Empate) é executado 60 vezes por segundo.
Então eu li em outro lugar que Update
e Draw
pode ser invocado em momentos diferentes e Update
pode ser chamado mais de uma vez antes Draw
e assim por diante.
... e no final UnloadContent
é invocado após o Update
se o Exit
método for chamado.
Respostas:
Na verdade, existem duas maneiras pelas quais o XNA pode executar o loop do jogo, Etapa Fixa e Etapa Variável. Quando você configura seu jogo para executar a Etapa Fixa, ele sempre chama o método Update com base no tempo decorrido do jogo. Portanto, não importa a velocidade do seu computador, ele sempre chamará o método Update no mesmo intervalo de tempo decorrido do jogo; portanto, o Update e o Draw serão chamados sucessivamente, conforme descrito. No entanto, se o seu jogo estiver lento, o XNA começará a chamar o método Update várias vezes antes do método Draw, para "recuperar o atraso".
A Etapa variável, por outro lado, não tenta "acompanhar" ou faz várias chamadas do método Update antes da chamada do método Draw, se o jogo estiver lento.
Edição: Nice post post que explica passo fixo e passo variável é muito mais profundidade. gamedev.net
fonte
A menos que você esteja escrevendo um jogo para Windows e carregando conteúdo não gerenciado, não se preocupe com o UnloadContent. Se tudo o que você está fazendo é desenhar com o SpriteBatch e talvez reproduzir objetos SoundEffect e Song, esqueça o UnloadContent () por enquanto.
Para Update and Draw, ao iniciar o XNA, pense que o XNA Framework chamará automaticamente Update, depois Draw, depois Update e Draw ... e assim por diante. Existem exceções? Sim. Você precisa se preocupar com eles quando começar? Não, a menos que você já seja um desenvolvedor de jogos experiente. Se sim, aceite minhas desculpas ...
Se o seu jogo usar o Fixed Time Step, será um atraso para que esse loop não seja mais rápido que o tempo. Os projetos do Windows Phone adicionam uma linha de código para fixar o jogo em 30fps. Você aprenderá um pouco sobre isso fazendo nada além de criar um novo projeto do Windows Game e, em seguida, um novo projeto do Windows Phone Game. Procure a única linha de código no projeto do Windows Phone que corrige a etapa do tempo.
O comentário acima para ver a publicação de Shawn Hargreaves está no local. Na verdade, ele é a fonte se você quiser falar franco com desenvolvedores sobre a estrutura XNA. São alguns anos de posts, mas esse é um bom recurso.
fonte
Não sei como alterar a ordem, mas Atualizar e Desenhar são apenas funções para que você possa chamá-las de outros lugares - embora eu não consiga pensar nisso. Como regra geral, você usaria apenas Atualizar, Desenhar, Atualizar, Desenhar etc., como disse.
A descarga é chamada depois que a função de saída é chamada sim.
fonte