As variáveis podem ser entendidas como sendo armazenadores. Podemos armazenar nelas qualquer tipo de informação que iremos usar futuramente, uma coordenada, o resultado de uma equação, a própria equação, entre muitas outras coisas. Tudo vai depender da sua capacidade de programar e fazer uso dessas informações. No Game Maker existem três tipos distintos de variáveis: Locais, Instânciais e Globais.
Usando with:
with(obj_jogador)
{
x = 10
y = 10
vida = 100
}
Usando "objeto.variável":
obj_jogador.x = 10
obj_jogador.y = 10
obj_jogador.vida = 100
Ambos códigos modificam a posição do jogador para x = 10 e y = 10 e a vida para 100, decida qual usar de acordo com sua necessidade e preferência.
Dica: Nunca dê o mesmo nome para variáveis, a menos que saiba exatamente o que está fazendo, mesmo que sejam de diferentes tipos. Para evitar usar o mesmo nome uma boa dica é usar prefixos ou sufixos, como sugeri no Tutorial sobre Sprites, por exemplo: lcomida para local e gcomida para global.
Locais
São variáveis que são usadas durante a execução do script e são descartas no final. Só podem ser utilizadas dentro de um mesmo evento, portanto, se a variável local "vida" for declarada em Step Event outros scripts dentro do mesmo evento a reconhecerão, porém um script usado no Collision Event não, pois ela já terá sido deletada ao fim da execução do Step Event. Para usar variáveis como sendo locais é necessário declará-las utilizando a função var.
São variáveis que são usadas durante a execução do script e são descartas no final. Só podem ser utilizadas dentro de um mesmo evento, portanto, se a variável local "vida" for declarada em Step Event outros scripts dentro do mesmo evento a reconhecerão, porém um script usado no Collision Event não, pois ela já terá sido deletada ao fim da execução do Step Event. Para usar variáveis como sendo locais é necessário declará-las utilizando a função var.
Exemplo:
var xx = 10, yy;
yy = irandom(5)
instance_create(xx, yy, obj_projetil)
Neste exemplo o Projétil será criado na posição x = 10 e y = um número de 0 a 5. Como não precisaremos dessas variáveis futuramente podemos descartá-las a fim do código.
Notas:
-Essas variáveis são feitas para serem utilizadas somente uma vez, portanto, são apagadas da memória após seu uso.
-Assim como no exemplo acima, o Game Maker: Studio possibilita que a variável local seja declarada e receba um valor ao mesmo tempo ou que receba um valor depois de ser declarada, só depende da sua preferência.
-Não use esta variável caso precise manipulá-la à partir de outro objeto.
-Quando usadas da maneira correta são uma ótima ferramente para economizar memória e otimizar o jogo.
Instânciais
São variáveis que podem ser utilizadas por quaisquer eventos dentro de uma mesma instância. Para declará-las basta dar um valor para ela, o que chamamos de "inicializar uma variável". Caso tente usar uma variável que não foi inicializada ocorrerá erro de execução do código. Diferente das variáveis locais, podemos utilizá-las em eventos posteriores ao que ela foi declarada/inicializada. Essas variáveis são destruídas juntamente com a instância.
São variáveis que podem ser utilizadas por quaisquer eventos dentro de uma mesma instância. Para declará-las basta dar um valor para ela, o que chamamos de "inicializar uma variável". Caso tente usar uma variável que não foi inicializada ocorrerá erro de execução do código. Diferente das variáveis locais, podemos utilizá-las em eventos posteriores ao que ela foi declarada/inicializada. Essas variáveis são destruídas juntamente com a instância.
Exemplo:
Step Event:
if vida <= 0
{
morte = true
}
Neste caso teríamos uma mensagem de erro dizendo que a variável não foi declarada, portanto, ela não existe para o Game Maker.
A maneira correta seria:
Create Event:
vida = 100
Step Event:
if vida <= 0
{
morte = true
}
Nota: Cuidado para não declarar a variável no lugar errado, por exemplo, se declarássemos vida = 100 no Step Event, a cada step a vida do personagem seria igualada a 100, o que provavelmente não é o resultado esperado. Outro exemplo seria usar o código if morte = true {instance_destroy()} no Create Event, pois quando o objeto foi criado morte era igual a false e esse valor nunca mudará pois o Create Event só é executado uma única vez, que é na criação da instância.
Para mais informações leia: Tutorial sobre Eventos
Globais
Estas variáveis ficam guardadas na memória do jogo, portanto, independentemente que o objeto seja destruído ou desativado, esta variável permanecerá no jogo. Podem ser acessadas por qualquer instância através de duas maneiras, que dependem como a variável foi primeiramente declarada.
Estas variáveis ficam guardadas na memória do jogo, portanto, independentemente que o objeto seja destruído ou desativado, esta variável permanecerá no jogo. Podem ser acessadas por qualquer instância através de duas maneiras, que dependem como a variável foi primeiramente declarada.
Método 1 - Declarar uma única vez.
Create Event:
globalvar vida;
Step Event:
if vida <= 0
{
morte = true
}
Método 2 - Declarar todas vezes que usar a variável.
Step Event:
if global.vida <= 0
{
morte = true
}
Utilizando o primeiro método temos a vantagem de não precisar escrever global toda vez que for fazer uso da variável, já com o segundo não acontecerá de você esquecer que está usando uma variável global e também poderá usar o mesmo nome para uma variável local ou uma instâncial, mas sugiro que não faça.
Olá gostaria de formar uma parceira contigo, faço videos de game maker e gostaria de posta-los juntos aos seus textos, aumentando a minha visibilidade quanto a sua :)
ResponderExcluirOi Fábio, tudo bem? Pode me mandar um link do seu canal e um email para contato?
Excluirolá, gostaria de saber o canal!
ResponderExcluirobrigado
adorei esse canal , nao sei nada de programaçao mas adoro game , sou design grafico, e gostaria muito de aprender tota ajuda é muito bom grato galera
ResponderExcluir