Neste artigo, veremos a estrutura de inventário que apliquei ao meu projeto multiplayer. Esta seção é muito pequena e não contém código.
O inventário em si é um componente usado não apenas para o Personagem , mas também para qualquer objeto no jogo que, de acordo com o cenário, pode ser um armazenamento de itens. Por exemplo: baú, caixa, caixa, armário, etc.
Este componente contém um TArray , cujos elementos armazenam o mínimo de informações necessárias:
- O identificador do objeto, na forma de uma GameplayTag . Como eu disse anteriormente, GameplayTag é mais conveniente do que, digamos, FName , pois reduz significativamente o risco de erros.
- O número de objetos no slot especificado pela variável int .
- Categoria do objeto para entender como ele pode ser aplicado. Para esse fim, em vez de Enum, você pode usar GameplayTagsContainer , o que nos permitirá atribuir o objeto a vários tipos de uma só vez, se necessário.
- Propriedades exclusivas do objeto, que são armazenadas como uma estrutura de um monte de GameplayTag e float . Aqui você pode armazenar parâmetros e modificadores.
Não há links para os próprios objetos nessa estrutura de inventário, pois após salvar e carregar o jogo, eles se referem a áreas que já armazenam outros dados. Assim, você precisa de alguma ferramenta que possa restaurar (reaparecer) todos os objetos após o carregamento do jogo. Aqui o DataAsset trata do resgate , que está sempre disponível no lado do servidor (porque no nosso caso, nós o conectamos via GameMode ) e está pronto para ajudar a colocar o objeto no palco.
O componente de inventário também contém a lógica para remover e adicionar o número necessário de objetos, a lógica para preencher os slots. Todas as funções iniciadas no contêiner devem funcionar apenas no lado do servidor.
A estrutura da interação do inventário e banco de dados é a seguinte Propriedades exclusivas do objeto, como componentes adicionais e lógica, são facilmente configuradas usando C ++ e / ou Blueprint .
Na próxima seção, mostrarei como você pode conectar o componente criado ao Character ou a qualquer outro objeto.
Qualquer crítica construtiva é bem-vinda. De preferência, apoiado por sugestões.
PS Nos dois primeiros artigos, foram adicionadas imagens explicativas.