Metascript

Este artigo apresenta como editar metascripts.

Descrição da interface

image-20240719154714450

  1. Canvas, a principal área de edição
  2. O arquivo que está sendo editado no momento
  3. Classificação de elementos, clique em qualquer elemento para expandir a interface de seleção de elementos
  4. Painel de propriedades

Descrição da classificação do elemento

  1. As categorias de elementos gráficos correspondentes às regiões são:

  2. Pesquisar: insira palavras-chave para pesquisar gráficos.

  3. Comumente usados: os gráficos definidos como comumente usados estarão aqui.

  4. Evento: será acionado quando as condições forem atendidas, o que é o início da lógica.

  5. Condições: usado para controle de fluxo de script.

  6. Comportamento: operação real em entidades\dados.

  7. Módulos: Alguns comportamentos específicos de módulos.

  8. Dados: Processamento de dados.

  9. Variáveis: use variáveis existentes ou adicione variáveis.

  10. Função: use ou crie uma função personalizada.

  11. Chamada externa: chame funções personalizadas de outros scripts.

Uso de gráficos

Meta Descrição

A protuberância sob o primitivo indica que outros primitivos podem ser vinculados a ele.

imagem-20240719162414368

A depressão acima do primitivo significa que outros primitivos podem ser vinculados antes deste primitivo, e ele só será executado depois que os primitivos precedentes forem executados.

imagem-20240719162458868

Se não houver depressão na parte superior, mas uma protuberância na parte inferior, significa que o primitivo é o ponto inicial de um segmento lógico, geralmente um primitivo de evento.

image-20240719162532230

Se não houver convexidade ou concavidade acima ou abaixo, significa que o primitivo é um dado e pode ser aplicado a outros primitivos.

image-20240719162637872

Os primitivos terão parâmetros de entrada e saída:

Parâmetros de entrada:

O parâmetro de entrada está em branco por padrão, e o tipo marcado dentro dele é o tipo do parâmetro necessário.

image-20240719163219101

O nome do script neste elemento também é um parâmetro obrigatório, mas usando o seletor de recursos, você pode selecionar diretamente o recurso correspondente no projeto sem considerar a correspondência de tipo.

Parâmetros de saída:

Os parâmetros de saída são quadrados coloridos por padrão, que podem ser arrastados para preencher as caixas de parâmetros de entrada necessárias:

image-20240719163455421

Uso de primitivos

Depois de selecionar o elemento que deseja usar na categoria, clique ou arraste-o para a tela para usar o elemento correspondente.

image-20240719161426471

image-20240719161444643

Usando o primitivo com a ranhura na parte superior, você pode unir os dois primitivos:

image-20240719161910607

image-20240719161930593

A lógica de um grupo de primitivas é sempre de cima para baixo:

image-20241105153444063

image-20241105153522814

Para um grupo de elementos gráficos conectados em série, os parâmetros de entrada necessários precisam ser preenchidos com os dados apropriados para garantir o funcionamento normal do script. Variáveis inadequadas resultarão em erro. Clique no erro para ver a mensagem de erro:

image-20240719163823327

image-20240719163854644

Quando você arrasta um elemento, os elementos abaixo dele também serão arrastados:

image-20240906110832061

image-20240906110844840

Mantenha pressionada a tecla Ctrl e arraste para arrastar apenas o elemento atual, e os elementos abaixo serão conectados automaticamente aos acima:

image-20240906110855565

Painel de Propriedades do Elemento

Clique no elemento e ele será selecionado.

image-20241122190755370

No painel Inspetor à direita, você pode visualizar informações detalhadas do elemento selecionado, incluindo seu nome, descrição, nome do parâmetro, tipo de parâmetro, tipo de valor de retorno, descrição do valor de retorno, etc.

image-20241122190944942

Controle de Fluxo

A ordem de execução padrão dos metascripts é de cima para baixo. Muitas vezes, você pode precisar de controle de fluxo de código para implementar lógica complexa.

Consulte o link a seguir para obter instruções detalhadas:

Notas adicionais do script

Variáveis

Três tipos de variáveis podem ser definidas ou modificadas no local da variável:

  1. Atributos de entidade global: atributos de componentes globais, suporte à personalização. Você pode obter ou modificar atributos de entidade global personalizados em qualquer script.
  2. Variáveis de script: variáveis usadas somente no script atual, outros scripts podem obtê-las e modificá-las externamente.
  3. Variáveis locais: variáveis que são usadas apenas no bloco de código atual e são inválidas fora do bloco de código.

Propriedades da entidade global

Propriedades de entidade globais podem ser adicionadas por meio das propriedades do componente de entidade nas configurações do componente.

image-20240719170731723

image-20240719170751222

imagem-20240719170812335

Depois de criar o atributo de entidade global, você pode usar Obter Entidade Global para obter o atributo:

image-20240719170915428

Use Definir Entidade Global para definir esta propriedade:

image-20240719170953632

Variáveis de script

Na categoria Variáveis, há um botão Criar Variável:

image-20240719171622005

image-20240719171647910

As variáveis criadas dessa maneira são variáveis de script e são usadas para processamento de dados no script atual.

Em outros scripts, você pode obter e definir essa variável por meio de referências externas:

image-20240719171819031

Observe que ao referenciar outros scripts externamente: ao obter e definir, você precisa especificar a entidade correspondente montada pelo script referenciado.

Variáveis locais

A primitiva de variável local permite que você crie variáveis que estão disponíveis apenas no bloco de código atual:

imagem-20240719171508081

Você pode renomear uma variável clicando duas vezes no nome da variável:

image-20240719171540482

Um bloco de código é uma sequência contínua de primitivas. Vale ressaltar que a primitiva “if-else” na classificação condicional é composta por dois blocos de código por padrão. Cada “if”, “else” e “else-if” é um bloco de código independente.

image-20240722192115698

imagem-20240722192055277

Funções personalizadas

Ambas as funções com e sem valores de retorno são suportadas em metascripts.

Uma função com valor de retorno não pode ser vinculada a outras entidades quando chamada. A entidade que faz a chamada é o valor de retorno.

image-20240719180031043

image-20240719180117743

Funções sem valores de retorno podem ser vinculadas a outras primitivas quando chamadas.

image-20240719180039563

imagem-20240719180134147

Esperar: Quando o primitivo for uma função assíncrona, ele será bloqueado e o próximo primitivo será executado após a execução da função assíncrona.

Execução: Se a primitiva for uma função assíncrona, ela não será bloqueada e a primitiva seguinte continuará a ser executada.

Uma função assíncrona é uma função que usa primitivas que realizam processamento assíncrono, como “esperar”.

image-20240722105341566

Observação: O uso de primitivas assíncronas em funções com valores de retorno não é suportado.

image-20240806115625031

Se você precisar de uma função assíncrona para retornar um valor, use uma função void e uma variável de saída.

image-20240806115658582

Independentemente de uma função personalizada ter um valor de retorno ou não, você pode usar a variável de saída da função abaixo do primitivo de chamada para obter a saída.

image-20240806113746376

image-20240806121329099

Eventos personalizados

Além dos vários eventos fornecidos oficialmente, você também pode acionar a lógica por meio de eventos personalizados.

image-20250630114130051

Clique no botão para executar o gerenciamento personalizado de eventos:

image-20250630114142109

Clique com o botão direito na lista de eventos personalizados para gerenciá-los:

image-20250630114340277

Clique no botão + para criar um novo evento personalizado:

image-20250630114208389

Aqui você precisa definir o nome do evento personalizado, o tipo de objeto para o qual o sinal do evento personalizado será enviado e os parâmetros. Somente o tipo de objeto especificado pode receber o sinal que aciona o evento.

imagem-20250121181204861

Envie um evento personalizado para todos os jogadores no início de seu turno

image-20250121181429023

O jogador aciona a lógica após receber o sinal de evento personalizado

Busca e uso comum de elementos gráficos

Insira palavras-chave para pesquisar os elementos correspondentes

imagem-20240719181845696

Na interface de seleção de elementos, clique com o botão direito do mouse em um elemento para defini-lo como um elemento usado com frequência e, então, você poderá usá-lo rapidamente na categoria de elementos usados com frequência.

image-20240719182033312

imagem-20240719182130450

Exemplo

Vamos usar um exemplo simples para demonstrar o uso do script:

O design é o seguinte:

  1. Cada jogador receberá uma M4A1 ao entrar no jogo.
  2. Quando um jogador atira, 1 ponto de saúde será deduzido de sua própria saúde cada vez que ele atirar.

Criar script:

  1. O requisito é global, 2. é para cada jogador. Portanto, você precisa montar um script globalmente e para cada jogador. O servidor precisa saber sobre a distribuição de adereços e a dedução de vida, então ambos são criados como scripts de servidor.

imagem-20240719183317332

image-20240719183333435

Editar script:

Para 1, cada jogador que entra no jogo precisa emitir adereços uma vez:

image-20240719183627320

Para adicionar primitivos de adereços, três parâmetros são necessários: o alvo para adicionar adereços, os adereços a serem adicionados e o número de adereços a serem adicionados.

O alvo da adição de adereços é o jogador que acionou o evento ao entrar no jogo. O adereço é selecionado como M4A1 pelo gerenciador de recursos e a quantidade é 1.

image-20240719183756275

Para 2, uma dedução de saúde precisa ser realizada toda vez que um tiro for disparado:

Descobrimos que os primitivos não têm sua saúde deduzida:

image-20240719183925677

Preencher números negativos nos parâmetros da primitiva de recuperação de saúde não deduzirá a saúde

Entretanto, como um atributo do jogador, a saúde pode ser ajustada definindo propriedades:

image-20240719184034769

Para definir o atributo primitivo, você precisa definir a entidade, definir o atributo e o valor e calcular vários parâmetros.

A entidade cujos atributos estão definidos é o jogador atual, então você pode usar essa entidade e clicar duas vezes na posição do parâmetro para preenchê-la rapidamente.

image-20240719184236329

O valor do atributo que precisa ser alterado é o valor de integridade atual, selecione o valor de integridade atual.

O valor definido é o valor de saúde atual menos 1, então a saúde atual precisa ser obtida.

image-20240719184443713

Use o método de subtração na classificação de dados para reduzi-los em um e adicionar parâmetros:

image-20240719184604249

imagem-20240719184622223

Você também pode usar a operação de definição de primitivos de atributos diretamente para implementar esta lógica:

image-20240719184700828

Execute o depurador para visualizar os resultados:

image-20240719184826220

Todos receberam uma M4A1.

image-20240719184935284

Disparou 8 vezes e perdeu 8 pontos de saúde.

Ao disparar, o disparo é acionado sempre que um comando de disparo é executado. O disparo de uma arma de rajada antes de a arma ser abaixada é considerado um disparo, e este evento só pode ser acionado uma vez.