Pupilo Maker

Criação de Jogos


    Manipulando variáveis em outras instâncias

    Compartilhe

    Macedo

    Mensagens : 28
    Data de inscrição : 18/02/2014
    Idade : 27
    Localização : Rio de Janeiro

    Manipulando variáveis em outras instâncias

    Mensagem por Macedo em Seg Ago 29 2016, 17:57

    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:

    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().

      Data/hora atual: Sex Nov 17 2017, 15:02