minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Neste artigo, continuamos a otimizar as habilidades e agora as habilidades ativas adicionadas ao personagem podem ser sincronizadas com a IU. Neste artigo iremos melhorar o consumo de habilidades (liberar habilidades para reduzir mana) e o mecanismo de resfriamento.
Podemos ver que no valor padrão da classe de habilidade, você pode definir seu resfriamento e GE consumido
Portanto, a seguir, usaremos GE para definir o resfriamento e o consumo de habilidades.
Primeiro criamos um blueprint e a classe pai selecionada é Gameplay Effect
Chame-o de GE_Cost_FireBolt, que significa o custo da bola de fogo.
Para consumir nossa duração, escolha Instantâneo.
Em seguida, adicionamos Modificadores para reduzir a quantidade de mana do personagem, reduzindo-a em 20 cada vez que uma habilidade é usada.
Cria-se um GE de consumo simples e aplicamos em competências
Em seguida, temos que chamar o nó Commit Ability na habilidade. Este nó deduzirá o mana necessário para a habilidade. Se houver um cooldown, a habilidade entrará no tempo de cooldown.
Commit Ability é um nó unificado para deduzir mana e resfriamento. Claro, você também pode separá-lo e ter nós separados para deduzir consumo e resfriamento.
Execute o efeito de teste
Primeiro, determinamos se a habilidade será ativada se não houver mana suficiente. Imprimimos os dados antes de processar o consumo.
Se a quantidade de mana for suficiente, ela poderá ser impressa com sucesso, mas se a quantidade de mana não puder suportar a liberação da habilidade, ela não será impressa, o que prova que se não houver recursos suficientes, a habilidade não será inserida, e não é julgado pela Commit Ability, que é usada apenas para consumo do nó Resource.
Observamos o código-fonte e o código que ele chama é K2_CommitAbility
CommitAbility é chamado internamente para implementar a lógica, e então é verificado se o consumo é suficiente para fornecer as habilidades, e a função é chamada para deduzir os recursos.
CommExecute é uma função de dedução de recursos, que chama internamente dedução de recursos e resfriamento
Dê uma olhada em Apply Cooldown, que pegará o nível de habilidade e aplicará o GE ao ASC
Os recursos do aplicativo são consumidos da mesma forma e os níveis de habilidade também são obtidos.
Agora sabemos que usar o consumo de habilidade pode modificar a quantidade de mana que consome através do nível de habilidade. Podemos usar a tabela para definir diferentes níveis e consumo de mana.
Então criamos uma nova tabela de curva para definir o consumo de mana das habilidades em diferentes níveis.
Crie uma tabela de curva, selecione Constante como tipo e defina o consumo de mana em cada nível para um valor fixo.
Nomeado CT_Cost
Adiciona internamente o consumo de mana da habilidade do nível 1 ao nível 10 da Bola de Fogo.
Em seguida, use a tabela de curvas aqui no GE, selecione a linha criada e defina o valor como -1
Em seguida, modifique o nível de habilidade inicial no código para teste
Depois de liberar uma habilidade, a quantidade de mana é três vezes maior que antes, o que prova que não há problema com as configurações.
O princípio do resfriamento da habilidade é aplicar uma etiqueta de resfriamento ao ASC durante a fase de resfriamento. Essa habilidade não pode ser usada novamente enquanto a etiqueta de resfriamento existir.
Então, queremos implementar o resfriamento, primeiro crie um rótulo para resfriamento
FGameplayTag Cooldown_Fire_FireBolt; //火球术冷却标签
Então registre-se no gerenciador de tags
GameplayTags.Cooldown_Fire_FireBolt = UGameplayTagsManager::Get()
.AddNativeGameplayTag(
FName("Cooldown.Fire.FireBolt"),
FString("火球术冷却标签")
);
Cria uma bola de fogo para resfriar GE
Modifique GE para um Has Duration sensível ao tempo
Como você pode ver aqui, o tempo de resfriamento pode ser definido usando os vários métodos que usamos para modificar o valor antes. Aqui usamos o mais simples, configurando-o diretamente para 1s.
Não precisamos modificar o conteúdo relacionado ao personagem aqui. Só precisamos adicionar uma tag de resfriamento ao ASC quando este GE entrar em vigor.
Adicione um rótulo de resfriamento ao Ator por meio deste componente e adicione o rótulo de resfriamento que criamos.
Em seguida, aplique o cooldown na habilidade
Executando o teste, descobrimos que só podemos liberar a habilidade uma vez por segundo.
Geralmente geramos apenas uma instância de habilidade de personagem para um personagem. Para evitar que o cliente desligue a habilidade antes que a habilidade seja acionada, encerraremos a habilidade quando a animação de montagem da habilidade terminar ou o mix-in for. cancelado à força, e quando a habilidade terminar, para poder continuar reproduzindo a montagem.
Também precisamos ativar a capacidade instanciada de Retrigger para que, quando ela for ativada novamente, ela desative o gatilho anterior.
Acompanhamento: Agora temos o consumo e ele pode ser exibido corretamente na UI, mas o resfriamento ainda não foi implementado. Após usar a habilidade, o progresso do resfriamento da habilidade não pode ser exibido na UI da habilidade. as mudanças na habilidade de resfriamento no futuro e exibi-las acima da IU.