Existem algumas técnicas de otimização muito importantes para facilitar e expandir o potencial do nosso jogo uma delas é a manipulação de variáveis em outras instâncias, vai ocorrer muitos casos em que você vai querer manipular variáveis fora das instâncias que contem o bloco de código
Um dos métodos mais comuns para acessar ou mudar uma variável em outra instância é usar seu nome de objeto como um identificador e, em seguida, usar um ponto "." depois inserir o nome da variável que deseja alterar, ficaria assim:
Com o código acima você está definindo o speed da instancia "obj_ball". No entanto, se você tem mais de uma instância do objeto na room, em seguida, ele será aplicado a todos eles igualmente.
Caso queira que afete somente um dos vários objetos que estão na room precisará utilizar o ID da instância para informa exatamente qual delas deseja manipular. O ID da instância é o único número de identificação que é dado a cada instância criada no seu jogo. Quando você coloca instâncias em uma room, este ID de instância é mostrado na parte inferior da tela quando você passa o cursor do mouse sobre a mesma, mas mesmo se você criar uma instância através de código ela ainda possuirá o seu número de identificação único. Estes números são sempre maiores ou igual a 100.000.
Vamos fazer um teste, crie um objeto obj_draw_instance, defina o delph para - 100000 e insira o seguinte código no evento draw:
e o coloque numa room cheia de instâncias e irá perceber que cada instância retorna um número diferente e utilizando esse número único da pra manipular uma única instância.
O código a seguir é um exemplo de como isso deve ser escrito:
Observe que você não pode usar a palavra-chave especial "all" com este método para direcionar todas as instâncias, mas você pode usar as palavras-chave "other" e "self" sem problemas. Você também pode usar variáveis (como no outro exemplo ) para armazenar um ID de instância válido.
Usando uma variável para definir um valor de instância:
var inst = instance_position (mouse_x, mouse_y, all);
if instance_exists (inst) {
inst.speed = 0;
}
Observe que o código acima tem um instance_exists () chamado no bloco de código. Dessa maneira evita de que ocorra um erro que pode travar seu jogo se a instância não existir. Portanto, se existe a possibilidade de que a instância poderia ser destruída, desativado ou de outra forma removida da room enquanto estiver usando esse método, você deve sempre verificar antes se a instância existe de fato usando a função instance_number() ou instance_exists().
Um dos métodos mais comuns para acessar ou mudar uma variável em outra instância é usar seu nome de objeto como um identificador e, em seguida, usar um ponto "." depois inserir o nome da variável que deseja alterar, ficaria assim:
- Código:
obj_ball.speed = 0;
Com o código acima você está definindo o speed da instancia "obj_ball". No entanto, se você tem mais de uma instância do objeto na room, em seguida, ele será aplicado a todos eles igualmente.
Caso queira que afete somente um dos vários objetos que estão na room precisará utilizar o ID da instância para informa exatamente qual delas deseja manipular. O ID da instância é o único número de identificação que é dado a cada instância criada no seu jogo. Quando você coloca instâncias em uma room, este ID de instância é mostrado na parte inferior da tela quando você passa o cursor do mouse sobre a mesma, mas mesmo se você criar uma instância através de código ela ainda possuirá o seu número de identificação único. Estes números são sempre maiores ou igual a 100.000.
Vamos fazer um teste, crie um objeto obj_draw_instance, defina o delph para - 100000 e insira o seguinte código no evento draw:
- Código:
inst = instance_position(mouse_x, mouse_y,all) //retorna e atribui o ID da instância que o mouse estiver "encostando"
draw_text(mouse_x,mouse_y,inst)
e o coloque numa room cheia de instâncias e irá perceber que cada instância retorna um número diferente e utilizando esse número único da pra manipular uma única instância.
O código a seguir é um exemplo de como isso deve ser escrito:
- Código:
(100012).speed = 0;
Observe que você não pode usar a palavra-chave especial "all" com este método para direcionar todas as instâncias, mas você pode usar as palavras-chave "other" e "self" sem problemas. Você também pode usar variáveis (como no outro exemplo ) para armazenar um ID de instância válido.
Usando uma variável para definir um valor de instância:
var inst = instance_position (mouse_x, mouse_y, all);
if instance_exists (inst) {
inst.speed = 0;
}
Observe que o código acima tem um instance_exists () chamado no bloco de código. Dessa maneira evita de que ocorra um erro que pode travar seu jogo se a instância não existir. Portanto, se existe a possibilidade de que a instância poderia ser destruída, desativado ou de outra forma removida da room enquanto estiver usando esse método, você deve sempre verificar antes se a instância existe de fato usando a função instance_number() ou instance_exists().