Este artigo apresenta principalmente conceitos relacionados ao editor primitivo e aos primitivos no CraftLand.
Visão geral dos Metablocks
Ao editar gráficos, precisamos observar o formato de cada bloco gráfico. O que precisamos fazer é juntá-los de acordo com regras fixas.
Operações básicas
Antes de entrarmos no editor primitivo, precisamos abrir um script. Abra o CraftLand, clique em [Mais] no canto superior esquerdo e, em seguida, clique em [Script de Bloco]. Ao entrarmos no editor primitivo, abriremos o “script global” por padrão.
Introdução à interface
Após entrar no editor de elementos, há 4 áreas na interface do editor que merecem nossa atenção, conforme mostrado na figura abaixo.
Número de série | Imagem | Descrição |
---|---|---|
1 | ![]() |
No canto superior esquerdo da interface, há uma caixa de pesquisa. Como há um grande número de blocos primitivos, podemos recuperá-los inserindo palavras-chave na caixa de pesquisa. |
2 | ![]() |
No canto superior direito da interface, você encontrará a lista de seleção de scripts. Clique no ícone à direita para exibir uma opção suspensa, mostrando os scripts disponíveis no momento. Scripts globais são criados por padrão. |
3 | ![]() |
Dividimos os primitivos em 6 categorias. Podemos clicar no ícone da categoria para expandir a lista de blocos de primitivos. |
4 | ![]() |
O ícone à esquerda é o botão de desfazer, que pode desfazer a última operação. O ícone à direita é o botão de refazer, que pode refazer a última operação desfeita. |
Colocar primitivos
1. Arraste o bloco: Depois de entender a interface, primeiro abrimos a primeira categoria no canto inferior esquerdo, selecionamos um bloco primitivo e o arrastamos para o espaço em branco como ponto de partida da nossa lógica
2. Conectando blocos: Selecionamos um bloco com uma depressão na parte superior da lista de blocos. Ao arrastar o bloco para a parte inferior do bloco inicial, veremos que um prompt amarelo da interface do usuário aparecerá na parte elevada abaixo do bloco inicial. Ao soltarmos os dedos, veremos que os dois blocos serão automaticamente adsorvidos. Assim, concluímos uma lógica simples.
3. Preencha os dados: Primeiro, arrastamos os dados no bloco primitivo ou arrastamos o tipo de dado apropriado na lista primitiva.
Em seguida, arraste o bloco de dados para o espaço de dados correspondente. Uma caixa de diálogo amarela da interface do usuário aparecerá no espaço de dados, indicando que o tipo de bloco atual pode ser inserido. Ao soltar o dedo, o bloco de dados será automaticamente absorvido pelo espaço.
Nota: Quando o tipo de dado preenchido for inconsistente com o tipo de dado no espaço, o editor terá um prompt óbvio e exibirá automaticamente o bloco de dados que não corresponde ao tipo.
4. Desmontando blocos Quando movemos um dos vários blocos gráficos que estão conectados, todos os blocos conectados abaixo dele serão removidos juntos.
5. Excluir blocos: Ao pressionar e segurar qualquer bloco gráfico, uma “lixeira” aparecerá no lado direito da interface. Podemos excluir o bloco gráfico movendo-o para a lixeira.
Claro, também podemos arrastar vários blocos para a “lixeira” para excluir vários blocos ao mesmo tempo.
Forma
Descrição do bloco | Ícone |
---|---|
Somente o bloco elevado abaixo é o ponto de partida de uma lógica. | ![]() |
O bloco com apenas o topo afundado geralmente é o ponto final de uma lógica. | ![]() |
Se não houver depressão na parte superior e nenhuma saliência na parte inferior, significa que este bloco é um pedaço de dados, que pode ser aplicado a outros blocos como um parâmetro em algumas operações lógicas. | ![]() |
Se um bloco tiver um topo elevado e um fundo rebaixado, significa que o bloco pode ser vinculado a outros blocos com fundo elevado e também a mais blocos abaixo dele. Pode ser um nó de uma lógica. | ![]() |
Na classificação de blocos, encontraremos um bloco com um formato especial. Este bloco especial é uma expressão condicional, que é dividida em convexidades externas e áreas côncavas e convexidades internas e áreas côncavas. Podemos conectar outros blocos normalmente nas convexidades externas e áreas côncavas do bloco de expressão condicional, como se estivéssemos conectando outros blocos, ou podemos vincular blocos dentro da expressão condicional, e a lógica escrita dentro dela precisa atender a uma lógica condicional específica antes de poder ser calculada. | ![]() |
Classificação
Para encontrar os blocos necessários de forma mais eficiente no editor primitivo, dividimos os blocos em 7 tipos.
Conforme mostrado na figura a seguir:
Tipo | Diagrama | Visão geral |
---|---|---|
Incidente | ![]() |
Tipo de evento: Geralmente, como o ponto de tempo em que uma lógica começa, quando escrevemos a lógica primitiva, primeiro precisamos esclarecer em qual ponto de tempo queremos que essa lógica seja acionada. Por exemplo, quando o jogador é ressuscitado, queremos dar a ele uma arma ou quando a rodada começa, queremos colocar uma caixa de suprimentos de lançamento aéreo no centro do mapa, então ‘Quando o jogador é ressuscitado’ e ‘Quando a rodada começa’ são os nós de tempo necessários para essa lógica. |
Entidade | ![]() |
Tipo de entidade: é um conceito importante no CraftLand (consulte ‘Conceitos importantes’ para obter detalhes). No processo de edição de primitivas, frequentemente chamamos ou alteramos as propriedades de uma entidade. |
Jogo | ![]() |
Tipo de Jogo: No tipo de Jogo, fornecemos muitas funções comumente usadas por criadores de CL. Essas funções geralmente são configurações que precisam ser ajustadas com frequência em alguns jogos. Essas funções também estão muito relacionadas à jogabilidade, como criar um monstro, alterar o skybox ou entrar em um canal de voz. |
Dados | ![]() |
Tipo de dados: Blocos de dados podem ser parâmetros necessários para a maioria das operações lógicas. Podem ser um dado usado em outros blocos ou uma operação para calcular um valor. |
Lógica | ![]() |
Tipo de lógica: No tipo de lógica, fornecemos múltiplas operações lógicas complexas. Este tipo de operação lógica é frequentemente usado no processamento de dados. Ela pode filtrar, julgar ou tomar decisões com base em condições específicas. Por exemplo, determinar se um número é maior que outro e, então, decidir realizar ações diferentes. |
Variável | ![]() |
Tipo de variável: No tipo de variável, podemos criar variáveis por nós mesmos. As variáveis criadas dessa forma são variáveis de script, que são usadas para o processamento de dados do script atual. Em outros scripts, as variáveis podem ser obtidas e definidas por referência externa. |
Função | ![]() |
Tipo de função: No tipo de função, você pode criar eventos personalizados. Os eventos personalizados que criamos podem encapsular parte da lógica, tornando-a mais clara, fácil de entender e manter. |
Descrição do bloco de elementos lógicos
Substantivo do bloco | Diagrama | Descrição |
---|---|---|
Instruções condicionais (instrução if) | ![]() |
Se a condição for atendida, o nó sob IF será executado. |
Instruções condicionais…else(if…else statement) | ![]() |
Se a condição for atendida, o nó sob IF será executado. Se a condição não for atendida, o nó sob ELSE será executado. |
Laço condicional (instrução while) | ![]() |
Enquanto a condição for atendida, os nós abaixo serão executados em um loop. |
Loop de rage inteiro (para declaração de índice) | ![]() |
O parâmetro i começa no valor mínimo e, cada vez que o nó inferior é executado, i aumenta o valor do passo até que i seja maior ou igual ao valor máximo. |
Faça um loop em cada elemento (para cada instrução) | ![]() |
Para cada KEY na lista de parâmetros/dicionário, execute o nó abaixo uma vez. |
Verifique se é um valor nulo | ![]() |
Verifique se é um valor nulo e trate o valor nulo adequadamente para evitar erros. |
Continuar para o próximo | ![]() |
Ignorar este loop e entrar no próximo loop do corpo do loop. |
Interromper loop | ![]() |
Interromper o loop e continuar executando o nó após o corpo do loop. |
O que é ECA?
No contexto de código, ECA (Evento-Condição-Ação) geralmente se refere a um método de representação de regras.
I. Componentes
- Event
- Uma situação ou ocorrência específica que desencadeia a execução de uma regra. Por exemplo, um jogador entra no jogo, causa uma morte ou sai do jogo.
Exemplo: O jogador causou uma morte e, após acionar este evento, o jogador recebeu 100 moedas de ouro
- Condição
- Uma expressão lógica que determina se ações subsequentes devem ser executadas após a ocorrência de um evento. A ação correspondente só será executada se a condição for verdadeira. Por exemplo, se o número de zumbis for menor que 10, crie um zumbi; se o número de jogadores for igual a 1, obtenha uma metralhadora Gatling; ou se as coordenadas do jogador forem iguais a um determinado valor, teletransporte o jogador para outra coordenada.
Exemplo: Quando um jogador entra no jogo e tem um microfone ligado, seu nome se tornará 'Eu tenho um microfone’
- Ação
- Se o evento ocorrer e as condições forem atendidas, a ação específica será executada. Isso pode incluir modificar dados, chamar uma função, enviar uma mensagem, acionar outro evento, etc.
Exemplo: Dê ao jogador um AK47 no início da rodada e defina a saúde do jogador para 500
Conceitos importantes em ECA
Nome do conceito | Descrição |
---|---|
Função | Uma função (frequentemente chamada de método) é um bloco de código reutilizável que executa uma tarefa específica. Uma função encapsula uma operação ou tarefa específica em um bloco de método independente, tornando as operações e a lógica mais modulares e fáceis de manter. Código externo pode executar tarefas específicas chamando uma função sem precisar entender os detalhes de implementação da função. |
Parâmetros | Parâmetros são valores passados para funções ou métodos quando são chamados. Eles incluem parâmetros formais e parâmetros reais, que podem ser divididos em tipos de parâmetros para fornecer flexibilidade e transferência de dados, etc. |
Enumeração | Enumeração é um conceito de coleta constante de dados, como uma enumeração de método de ataque, que pode conter opções como corpo a corpo, tiro, explosão, etc. Diferentes tipos de enumeração não podem ser atribuídos uns aos outros, mesmo que seus valores sejam os mesmos, eles não podem ser atribuídos devido à semântica diferente. |
Eventos personalizados e variáveis personalizadas
Eventos personalizados
No canto inferior esquerdo do editor de elementos, encontramos um total de sete tipos de listas de elementos. No tipo de função, podemos clicar em [CRIAR FUNÇÃO] para criar um evento personalizado
Visão geral da interface de evento personalizada
Número de série | Imagem | Descrição |
---|---|---|
1 | ![]() |
Aqui podemos preencher o nome do evento personalizado |
2 | ![]() |
Clique no sinal de mais para adicionar um parâmetro interno ao evento personalizado. Este parâmetro só pode ser usado no evento personalizado ao qual pertence. |
3 | ![]() |
Clique no sinal de mais no canto inferior direito para adicionar um valor de retorno ao nosso evento personalizado. Quando chamamos esse evento em outra lógica de algoritmo, podemos obter os dados desejados. |
Descrição do evento personalizada
Ao editar primitivas, integraremos vários blocos primitivos em um evento personalizado. Também podemos dizer que encapsulamos várias lógicas de cálculo em um único método. Há várias vantagens em fazer isso:
1. Nomenclatura clara: Usando eventos encapsulados, não precisamos ler lógica de bloco primitiva complexa, podemos entender toda a intenção da lógica do evento apenas nomeando
2. Simplifique a estrutura primitiva: Encapsular cálculos complexos em eventos personalizados pode tornar a lógica da estrutura principal mais concisa e clara, reduzir a complexidade da estrutura primitiva e melhorar a legibilidade.
2. Reutilização: Quando vários blocos lógicos gráficos exigem a mesma operação, você pode reutilizar o evento personalizado encapsulado para evitar a gravação repetida da mesma lógica gráfica. Além disso, quando modificamos e mantemos esse evento personalizado, também podemos modificar vários blocos lógicos gráficos que reutilizam o evento personalizado ao mesmo tempo, evitando a modificação repetida do mesmo código em vários locais.
Variáveis personalizadas
Visão geral da interface de variáveis personalizadas
Na lista de tipos de elementos, selecione o tipo [VARIÁVEL] e clique em [CRIAR VARIÁVEL] para criar uma variável personalizada
Ao criar uma variável personalizada, podemos definir o nome da variável e o tipo de dados da variável
Descrição da variável personalizada
Ao escrever lógica gráfica, às vezes precisamos definir variáveis de parâmetros de tipos de dados de acordo com necessidades específicas. A função de variável personalizada resolve essa necessidade.
As variáveis que você cria também podem ser usadas para passar dados entre diferentes métodos. Ao armazenar dados em uma variável, você pode passá-los como parâmetro para outro método ou retorná-los de um método para quem os chamou.
Exemplo de evento/variável personalizado
Criaremos uma lógica para demonstrar como usar eventos personalizados e variáveis personalizadas no editor primitivo
Exemplo de lógica: quando um jogador mata alguém, o limite de saúde do jogador será reduzido em 10 pontos, e o mínimo será reduzido para 20.
- Primeiro, criamos uma variável personalizada chamada “CurrentMaxHp” e definimos o tipo de dado como “int”. Ao mesmo tempo, criamos um evento personalizado chamado “DecreaseMaxHp” como preparação preliminar
-
Localize e arraste o evento “Quando um jogador causa uma morte” e conecte-o ao evento personalizado “DecreaseMaxHp” que acabamos de criar. Após a conexão, concluímos a base lógica para reduzir o limite de vida do jogador quando ele mata
-
Após concluir a lógica básica, podemos começar a escrever a estrutura primitiva do evento personalizado. Primeiro, atribuímos o valor da variável que acabamos de criar
-
Em seguida, conecte um algoritmo para definir a variável como -10 sempre que um evento for acionado
-
Adicionado o limite mínimo de saúde, adicionada uma verificação: se o limite de saúde atual for menor ou igual a 20, o limite de saúde atual será igual a 20
-
Reatribua a variável calculada ao atributo de limite de vida do jogador. Até agora, concluímos toda a lógica necessária.
-
Verifique
O limite de saúde foi reduzido corretamente e verificado corretamente.