Transcrições
1. 1.01 Introdução: Neste curso, aprenderemos
como desenvolver um sistema de
inventário de RPG multijogador usando plantas no arquivo
Unreal Engine Começaremos do
zero e abordaremos design da interface
e a
programação do inventário. Este curso abordará como
criar a interface do usuário para o inventário. Como criar categorias de
inventário, como criar espaços de inventário, como
saquear itens para o inventário, como exibir o
item mencionado em seu inventário com
ícone e texto. Como retirar itens
do inventário para arrastar itens do inventário para
fora e trocar de espaço de estoque, dois itens e como adicionar
efeitos sonoros ao inventário. No final deste curso, você poderá criar
com confiança seu próprio sistema de inventário de
RPG multijogador para implementar em seus projetos de jogos atuais
ou futuros. Eu desenvolvi este curso para
qualquer pessoa interessada em criar um sistema de inventário para seu jogo e para o
Unreal Engine Five, usando as melhores
práticas de codificação e código otimizado. Espero que você se junte a
mim neste curso. E lembre-se de que estou
sempre aqui durante todo o
curso para ajudá-lo. E espero ver você em breve.
2. 1.02 Baixando o projeto: Agora vamos fazer o
download dos materiais do curso. Você pode encontrar
os materiais de custo
no site ou no e-mail
ao comprar o curso. Portanto, verifique o
site ou o e-mail. Vamos abrir os materiais do
curso. E aqui dentro temos esse projeto chamado inventário
de RPG. Agora, normalmente, se você já
fez meus cursos anteriores, gosto de começar com um projeto em branco do
Unreal Engine
porque quero
ensinar tudo
do zero e deixá-lo confiante
com o desenvolvimento de jogos. No entanto, como estamos
fazendo um inventário, precisamos de um jogo que já esteja funcionando. Este é apenas um jogo
muito, muito básico. Eu não fiz muita coisa. Vamos arrastar
essa pasta de inventário de RPG para
a área de trabalho porque
precisamos extraí-la. Essa é uma pasta zip, então precisamos
extrair o conteúdo. Isso vai levar algum tempo. Vou esperar
que acabe aqui. Tudo bem, agora que está pronto, posso clicar duas vezes nele. E dentro desta pasta
você pode ver que este é o projeto Unreal Engine com o qual
trabalharemos. Agora vamos
fechá-lo e vamos para Documentos. E em vez de documentos, temos algo chamado pasta
de projetos irreais. E é aqui que estão todos os seus projetos anteriores do Unreal
Engine. Se você nunca fez nenhum projeto antes,
isso ficará vazio. Então, dentro de Documents, Unreal
Engine ou Unreal Projects, vamos clicar e arrastar nossa
pasta de inventário de RPG para dentro daqui. E quando você faz isso, ao abrir o lançador da
Epic Games agora e entrar na biblioteca, aqui você pode
ver que aparece
o projeto de inventário de RPG que
acabamos de extrair na pasta
Unreal Projects. Agora estou usando o Unreal
Engine 5.1, 0.1. Mas se você tiver 5.1, 0.2 ou três, ou 5.2, e assim por diante. Nas versões mais recentes, isso realmente não
importa. Você também pode acompanhar. Vamos clicar duas vezes nesse projeto de
inventário de RPG e abri-lo. Este é o projeto com o qual
trabalharemos. E antes de
começarmos a próxima lição, vamos dar uma olhada em
uma rápida visão geral do
Unreal Engine cinco.
3. 1.03 Unreal Engine 5 Visão geral: Antes de começarmos a
desenvolver o inventário, vamos dar uma visão geral rápida
do Unreal Engine cinco. Se você fez meus cursos
anteriores e já conhece o
Unreal Engine cinco, você pode simplesmente pular esta lição
e pular para a próxima. Mas se você é novo aqui, vamos dar uma olhada
rápida em como Unreal Engine cinco é construído. Aqui no meio está a coisa
mais importante. Na minha opinião, essa
é a janela de visualização. E na janela de visualização você pode
ver a aparência do jogo. Então, dentro daqui, você pode segurar o botão
direito do mouse e dar uma
olhada no interior da janela de visualização
e ver como ela fica. Portanto, este é o nível de nível
simples criado para
isso, para esta lição aqui, você também pode se
mover segurando o botão direito do mouse e
clicando em W para avançar, clicando em S para retroceder, clicando em D para mover
para a direita e clicando em a para
mover para a esquerda. Agora, novamente, lembre-se de segurar o botão direito do mouse
enquanto clica em W, D, S e a para se movimentar. E é assim que eu
navego principalmente pelo interior
da janela de visualização. Eu apenas mantenho pressionado o botão direito
do mouse e pressiono essas teclas
aqui para me movimentar. Você também pode segurar o botão direito
do mouse
e clicar em e para subir ou clicar
no taco para descer. Mas você também pode segurar
o botão esquerdo do mouse. E quando você faz isso, você pode se mover assim. Normalmente não
uso isso e talvez às vezes no meu laptop,
mas geralmente não. Você também pode segurar o botão
esquerdo do mouse e o
botão direito do mouse ao mesmo tempo. E você também pode se movimentar
assim. A última coisa é que você
pode aumentar e diminuir o zoom usando a
roda de rolagem do mouse. Então, ampliando e diminuindo o zoom. Você também pode novamente, basta
segurar o botão direito do mouse, clicar em W para ir até esse item ou clicar em S para se
afastar do item. Então, novamente, é principalmente assim que eu navego
dentro da janela de visualização, mas você pode simplesmente dar uma olhada na
lateral desses níveis. Pegue o jeito de se
mover por aqui e veja o que
é melhor para você. Em vez da janela de visualização, temos botões diferentes. Então, aqui em cima, não
é muito importante para este curso. Por exemplo, temos a visão em
perspectiva agora, estamos
na visão em perspectiva. Você pode ver o jogo
da vista superior. Então, se você diminuir o
zoom, aumentar e diminuir usando o botão da roda do
mouse, você pode ver que essa
é a
aparência do jogo de cima. Novamente, você pode simplesmente
clicar aqui voltar ao modo de perspectiva. muito importante
para este curso, mas é bom saber que
temos esses botões para que
possamos ver o jogo em diferentes modos de
visualização, por exemplo, se eu não
iluminasse esse mapa, estaria muito escuro. E é por isso que
às vezes eu
clico aqui e vou para o modo sem iluminação. Agora eu posso ver meu nível
mesmo sem iluminação. E quando eu acendo meu jogo, clico aqui e
volto para o modo ao vivo. Muito, muito importante. Temos ferramentas
diferentes aqui em cima. Portanto, a primeira é
a ferramenta de seleção. Ao clicar nele, você pode selecionar itens
diferentes dentro
da porta de visualização. Aqui ao lado, temos a Ferramenta
Move clicando nela. Agora, ao clicar em um item, você pode ver esses pontos de articulação. O vermelho é o eixo x. E se você clicar nele, poderá mover esse
item no eixo x. O verde é o eixo y e o azul é o eixo z. Esses são os pontos de articulação. Você pode mover os itens quando Ferramenta de Mover estiver selecionada. Você também pode movê-los
em duas direções,
segurando-os aqui
perto do meio. E esta, e essa caixa aqui, movendo-a para o eixo de uma só vez, se eu clicar em Controle
Z para desfazer meu movimento aqui, e só para poder voltar aqui, também
temos a
ferramenta de rotação clicando nela. Você pode girar um item em três
graus diferentes, assim. Você também pode escalá-los
clicando na ferramenta de escala. E você pode escalá-lo. Vou clicar em Control Z para
colocá-lo aqui
novamente, para que fique claro. Você pode escalá-lo nesses
três eixos diferentes. Agora, se você quiser
dimensioná-lo uniformemente, você pode clicar nessa caixa
branca no meio. E quando você escala, isso
será dimensionado uniformemente. Ok, clique em Control Z novamente. Agora é muito importante saber
que temos atalhos para essas ferramentas porque
levaria muito tempo se você
tivesse que clicar aqui, mover este item, clicar aqui novamente para
girá-lo e assim por diante. Então, se você clicar em
Q no seu teclado, você tem a ferramenta Selecionar. Você clica em W, você
tem a Ferramenta Move. Se você clicar em E,
terá a ferramenta de rotação. E se você clicar em are, você tem a ferramenta de escala, por exemplo, para este registro aqui, eu posso clicar em W para movê-lo. Eu posso clicar em E para girá-lo. E talvez eu queira que seja
assim, como aqui. E eu posso clicar em W para
movê-lo para cima, como em R2, talvez aumentá-lo assim, movê-lo para cima e assim por diante. Então você pode ver que é muito
mais rápido trabalhar dessa maneira, em vez de simplesmente clicar
aqui o
tempo todo trabalhando no Controle Z. Para colocar isso de volta, também
temos ferramentas de encaixe. Então, aqui você pode ver
quando eu movo meu item, se eu apenas mover esta caneta, por exemplo, você pode ver que ela
se encaixa em uma grade. E isso é porque você
tem isso ativado aqui. Então, se você clicar nele
e movê-lo, poderá ver que ele se move suavemente. E se eu clicar nele novamente, você pode ver agora
que está preso novamente. Você também pode
clicar nesse número e aumentar o encaixe. Agora você pode ver que,
quando eu o arrasto,
ele se encaixa em uma grade muito maior e você pode
diminuí-lo novamente, se desejar. Então, essas são as
ferramentas de encaixe
ou o movimento, ou a escala ou a rotação e também para
o dimensionamento. Assim, você pode ver se eu vou até minha ferramenta de rotação clicando
em E no teclado. Eu posso girá-lo e ele se
rompe a cada dez graus. Eu posso clicar nele
aqui para desativá-lo. E agora eu posso, posso
girá-lo suavemente assim. E clicando em Control Z novamente. Então, essas são as
ferramentas de encaixe para a ferramenta de movimentação, a ferramenta de rotação
e a ferramenta de escala. última coisa que temos
é a velocidade da câmera, e essa é a velocidade
dessa câmera agora, dentro dessa janela de visualização, você pode clicar nela e
diminuir a velocidade. E agora você pode ver
que é muito lento. Isso geralmente é usado quando
você deseja focar objetos
muito pequenos dentro
do nível para que a câmera
não se mova muito rápido. Se você tem um nível grande deseja viajar, pode aumentar
a velocidade da câmera. E agora você pode ver que eu me movo
muito mais rápido no meu nível. Vou colocá-lo de volta na velocidade
da câmera de quatro. Aqui em cima temos a barra de ferramentas. Não é realmente muito
importante no momento. Mas o mais
importante é que podemos clicar neste
botão Jogar para jogar nosso jogo, ou clicando em jogar aqui, você pode ver que agora estou
jogando meu jogo. Eu posso me movimentar com as teclas W, S, a e D. Assim, eu posso me mover e
olhar ao redor com o mouse. Essa é a coisa mais importante que você precisa saber
agora, aqui em cima. Clicando em Escape
para parar de jogar e
clicando nesses três botões, você pode escolher como
deseja jogar. Então, geralmente, ele começa por
essa janela de visualização selecionada. Então, se eu jogar meu jogo assim, eu jogava dentro da janela de visualização. O que eu gosto no modo multijogador. Gosto de jogar na
nova janela do editor porque tenho duas janelas
abertas para o modo multijogador, então gosto de ver as coisas assim. Vamos fechá-lo por enquanto. E o
material multijogador está aqui embaixo. Então, vamos nos preocupar com isso
mais tarde, nas aulas posteriores.
Às vezes, seu motor pode parecer ruim e você pode tentar, dê uma olhada aqui nas
configurações, você tem algo chamado configurações de
escalabilidade dos motores. No momento, os meus estão prontos para serem épicos porque meu computador é rápido. Mas se você tiver um computador
mais lento, poderá alterá-lo para qualidade baixa ou média e assim por diante. muito bom saber que É muito bom saber que está lá à
direita, aqui temos o esboço e o esboço são simplesmente itens que você tem
dentro de seus níveis. Então, todos esses
itens que você vê aqui estão dentro desse nível
atual. E se eu selecionar, por exemplo ,
este banquinho aqui,
se eu clicar nele, você poderá ver que ele também
seleciona selecioná-lo aqui
no esboço. Então, o que quer que
você
selecione no nível, você pode vê-lo aqui
no esboço. Você também pode selecionar coisas
simplesmente clicando nelas aqui. Agora você pode ver que quando eu
clico neles aqui, ele também os seleciona
dentro do meu nível. Agora, isso é
útil quando você
deseja encontrar algo específico, por exemplo, você pode pesquisar aqui. Quero encontrar minhas fezes, por exemplo, e é essa aqui embaixo. Para esta ferramenta, eu a encontrei
aqui, posso clicar nela. E esse é o único. Quando você tem um nível muito grande e não consegue encontrar itens, você pode procurá-los aqui. Digamos que você não
soubesse onde estava. Como se você tivesse um nível muito
grande que selecionou e não
conseguisse realmente vê-lo. Você pode clicar em F no teclado e ele o
levará até lá automaticamente. Além disso, esqueci de
dizer que se você quiser dobrar ou
duplicar este item, você pode segurar Alt no teclado e
arrastar aqui. Então, segurando Alt no teclado, arrastando, isso
copiará o item. Às vezes, é muito útil quando você quer
projetar o nível. que você não precise arrastar esse
item repetidamente, clicando nele clicando
em Excluir para removê-los, vou clicar no X
aqui para poder ver
todos os itens novamente. Se você quiser organizar seus
itens aqui no esboço, você sempre pode clicar
no ícone dessa pasta. Isso criará pastas
e você pode simplesmente clicar,
arrastar e soltar esses
itens dentro das pastas. E você pode organizar
seu esboço. Vou
arrastá-lo novamente e remover este aqui. Em seguida, temos o painel Detalhes. E os
painéis de detalhes simplesmente mostram detalhes sobre o
item selecionado na janela de exibição. Então, se eu selecionar essa caneta
aqui, você pode ver, eu posso ver
detalhes diferentes sobre essa caneta. Eu posso ver a localização
dela e do mundo. Eu posso ver a rotação
dela, a escala. Eu posso ver qual
malha estática ele está usando. Uma sensação, por exemplo
, clique neste ícone aqui. Você pode encontrá-lo dentro
do navegador de conteúdo. E eu posso ver, é esse. Eu posso ver quais
materiais ele está usando. Informações sobre a física, a colisão e assim por diante. E é diferente para
cada item que você seleciona. Portanto, se eu selecionar este, posso ver
detalhes diferentes sobre esse item, detalhes
diferentes sobre
esse item e assim por diante. Muito importante,
o painel de detalhes é algo que você usa
o tempo todo no motor. Se eu clicar nisso, ei, por exemplo, eu posso definir a localização para ele se eu clicar e arrastar aqui. Então, em vez de usar a ferramenta
Move como essa, posso clicar e arrastar também
posso clicar e arrastar
nessas caixas,
se desejar. Então, às vezes você só
quer se mover assim, e às vezes você quer números
específicos. Então você pode simplesmente clicar
aqui e escrever, por exemplo ,
1.400, a localização X. E você pode ver que
passou por aqui. E também está certo,
acho que é -1.400. Estará por aqui. Então, -1.400. Você pode ver que
voltou para aqui. Agora, se você tem
números específicos que deseja escrever, pode escrevê-los aqui em vez de tentar observá-los aqui. E, finalmente, temos
o Content Browser. Então, geralmente isso não está
disponível ou
não é exibido quando você abre o Unreal Engine cinco
pela primeira vez. Então, posso clicar com o botão direito do mouse
e podemos fechar. E isso é o que
geralmente
parece quando você abre o
Unreal Engine cinco, pela primeira vez, você desenha
o conteúdo em vez
do navegador de conteúdo. Ao clicar nela, você pode ver mesma
guia que vimos antes, mas a linha de conteúdo
desaparece toda vez que você clica dentro dessa janela
de visualização. Então, clicando no conteúdo ROA, se eu quiser
clicar em algo aqui, você pode ver que desaparece
e eu acho isso um pouco chato porque estou
acostumado com o Unreal Engine 4, onde ele está ativo o tempo todo. Então, o que você pode fazer é
clicar no ROA desse conteúdo e clicar em inserir o layout. E isso vai
ficar ativo o tempo todo. E muito, muito simples. O navegador de conteúdo contém
apenas todos os arquivos que você
tem para o jogo. Então, por exemplo, para os ativos, essas são, na verdade, as pastas que
eu criei para criar esse nível. Então, por exemplo, aqui nos itens, vamos usar isso mais tarde para criar itens
para o inventário. E você pode simplesmente clicar e
arrastar isso para o nível. E você pode ver como
eles se parecem. Cancelado, clique duas vezes
neles e veja-os também
dentro desse visualizador. Então, esses são todos
os arquivos que você tem, essas são todas as animações. Vamos excluir todos aqueles que criam
pastas aqui,
podemos clicar com o botão direito do mouse e
criar uma nova pasta. Você também pode alterar a cor de uma pasta clicando nela, clicando botão direito do mouse e indo para definir cor. Isso é muito legal para
quando você quer organizar seus arquivos e
quer vê-los rapidamente. Você pode simplesmente dar-lhes cores. Eu só vou deletar
este por enquanto. Para adicionar itens dentro
do navegador de conteúdo, você pode clicar com o botão direito do mouse aqui ou
clicar no botão Adicionar. Eu normalmente clico, clique
com o botão direito aqui e você pode adicionar plantas. Faremos muito isso para
programar nosso inventário. Também usaremos a interface do
usuário para
criar a interface do usuário para o inventário. E você tem, por exemplo ,
animação, você
pode criar um novo nível, ler uma nova pasta também. Aqui, você pode
ver que podemos criar muitas coisas e isso
parece avassalador. Mas você provavelmente
não usará muitas dessas coisas
para começar. Então você realmente não precisa saber tudo aqui dentro. Concentre-se no que é muito importante. Então, neste curso, estamos focados apenas em criar
um inventário por enquanto. Ao criar o inventário, vamos usar
muitas dessas coisas. Vamos usar muitos
dos nós blueprints, azuis e
Blueprint. E vamos usar a interface
do usuário. Vamos usar os sons
para efeitos sonoros e assim por diante. Então, neste curso, você
aprenderá muitas
dessas coisas aqui. Portanto, não se preocupe com
isso por enquanto e dê uma
olhada rápida por aqui. Neste mecanismo, você
pode simplesmente se mover, clicar nas coisas,
movê-las. Não é realmente muito importante se você destruir coisas dentro
desse nível. E às vezes, quando
diz que você tem uma iluminação que
precisa ser reconstruída, você pode clicar nela,
construir e construir todos os níveis, e isso
criará automaticamente toda a iluminação para você. Agora, pode levar algum tempo se
o computador estiver muito lento, mas você pode ver o
progresso aqui embaixo. E quando terminar de
construir a iluminação, você pode ir em frente
e fechá-la. E vamos
clicar em Arquivo e Salvar tudo. E vamos passar
para a próxima lição.
4. 1.04 Qual o projeto já contém: Antes de começarmos, vamos
dar uma olhada no que esse projeto já contém. Agora eu criei
esse jogo rápido para você e ele
realmente não contém muito, mas precisávamos de algo para
começar a programar o inventário. Então, aqui
na pasta de ativos, eu tenho alguns itens. Usaremos esses itens
para criar itens que podemos perder nosso estoque e colocá-los dentro
de nosso inventário. Agora vamos excluí-lo por enquanto. Eu vou
te ensinar como fazer itens e olhá-los também. E o jogador, temos as
diferentes animações e você pode ver se clica
em jogar para o jogo, e já temos um conjunto de planos de
animação. E para o terreno, eu só tenho as texturas
para esse terreno. Também incluí efeitos sonoros para você que podemos usar
quando aludimos itens, abrimos o inventário e assim por diante. E nas plantas,
muito básico. Eu criei um modo de jogo. O modo está vazio
e, geralmente, essa visualização
aparece se você
não tiver nada dentro
da classe blueprint. Então você precisa clicar aqui para
abrir o editor de plantas completo. E isso é o que parece. Vazio, eu
realmente não toquei em nada. Eu só, mas o
controle do jogador e a classe de
peão padrão e
a abertura do controle do jogador também estão vazios. Temos o jogador, o jogador aqui
em vez do jogador. Muito básico. Acabei de adicionar o novo
sistema de movimentos para este jogador. Então, basta se mover para
frente e para trás e olhar
ao redor com o mouse. Então, não há realmente nada de
louco acontecendo aqui. Em seguida, temos o
plano animação da animação
para o jogador. E, novamente, temos
aqui o movimento de caminhar para frente, para
trás, para a esquerda e para a direita. E nós temos os mapas. Este é o mapa em que
estamos atualmente. Temos alguns itens do Marketplace. Eu uso esse fantástico pacote de
vila. Você pode encontrá-lo no
mercado gratuitamente. E isso é usado apenas
para projetar esse nível. Temos o céu de mercadorias, que é esse cara aqui em cima. Acabei de adicionar neblina para que não
possamos realmente
vê-la apenas para tornar esse nível
um pouco mais interessante. E então temos
esses personagens. Você também pode encontrá-los
no mercado. Coisas muito, muito legais. Às vezes também os uso
para criar protótipos
de alguns dos meus outros jogos. Então, se eu estou fazendo um jogo de
tiro e assim por diante, então vamos deletar
este por enquanto. Então isso é o que eu
tenho aqui dentro. E a última é a interface do usuário. Vamos usar isso
para projetar nosso inventário. Temos alguns botões aqui. A propósito, se você tem uma visão
muito grande como essa, eu tenho um garfo, um menor, então ele aparece muito
grande assim. Você pode clicar em Configurações
e tamanho da miniatura. Eu posso torná-lo pequeno, por exemplo, e ficará assim. Eu só vou usar a mídia para
que você possa vê-la
melhor neste curso. Eu também incluí uma fonte aqui, então você pode usá-la para a interface do usuário. Tenho alguns ícones que podemos usar quando eluímos
a banana, por exemplo, podemos adicionar esse ícone
ao inventário. E então temos as imagens, que são basicamente
o espaço do inventário. Então, esses são todos os itens. Jogo muito básico,
podemos simplesmente andar por aí, essa é a única coisa que
podemos fazer agora. E olhe ao redor. E você pode imaginar se
você comprou esse jogo de um amigo ou de alguém que você encontrou no Reddit ou
em outro lugar. E ele só pede que você coloque
um inventário em seu jogo. Então é isso que
vamos fazer.
5. 2.01 Introdução aos Blueprints de widgets: Antes de começarmos a
criar a interface do usuário, vamos dar uma
olhada no que é um Widget Blueprint. Então, vamos até
a pasta UI. Vamos clicar com o botão direito aqui. E vamos para a interface do usuário. Esses são todos os itens da interface
do usuário. Aqui podemos selecionar
o Widget Blueprint. Vamos criar um aqui. Selecione os widgets do usuário e
vá em frente e chame-os, eu costumo chamá-los de wb ou
você usaria um modelo como prefixo? E então vamos chamar
isso de principal. Portanto, a interface principal, esta será exibida como
nossa interface principal. Mais tarde. Vamos clicar duas vezes nele. E aqui você vê que essa é a aparência
de um Widget Blueprint. Então, Widget Blueprint, você
pode criar a interface do usuário aqui. Você tem um designer e
depois um gráfico. Então, no designer, você projeta a interface do usuário. E no gráfico, você programa a funcionalidade da interface
de usuário que você projetou. Dentro daqui, você
pode ver que tem uma pastilha e, em vez
da paleta, pode adicionar
coisas diferentes à sua planta,
por exemplo, você pode adicionar um botão. Você pode clicar
e arrastá-lo até aqui. Agora você pode ver que
o botão é enorme, e isso é porque vou
clicar em Conjuntos de controle. E isso ocorre porque
geralmente adicionamos uma tela
para começar. Então, se você pesquisar por Canvas
e este nós realmente adicionarmos, antes de adicionarmos qualquer coisa ao Canvas, você pode
arrastá-lo para dentro daqui ou clicar, arrastá-lo
e soltá-lo aqui. Então, se eu simplesmente excluir
este aqui, posso clicar e
arrastá-lo para aqui. Então você pode
arrastá-los aqui, aqui. Então, vamos voltar e
pegar o botão, por exemplo você pode adicioná-lo à tela, ou você pode adicionar o
botão novamente assim, onde você o arrasta para baixo
na hierarquia,
algo assim. E você pode ver que
foi adicionado aqui. E você sempre pode
clicar nele e arrastá-lo pela tela. Você também pode alterar
a posição
como antes de termos
um painel de detalhes. Lembre-se de que eu disse antes, se você clicar
em itens em sua janela de visualização, terá um painel de detalhes. Você também tem isso dentro
do Widget Blueprint. Então você tem detalhes
sobre esse botão. Você pode ver a posição. Você também pode mudar a
posição aqui. Ou você pode arrastá-lo. Se você quiser arrastá-lo, talvez queira colocar algo, um número específico, por exemplo, podemos escrever 1800 e
talvez seja disso que gostamos. Você também pode clicar nele
e redimensioná-lo. De novo. Você também pode redimensioná-lo
aqui, se desejar. Todos os detalhes do botão. Novamente, se você
adicionar outros itens, verá que eles têm detalhes
diferentes. Então, por exemplo, se eu pegar o texto aqui, você pode ver no texto que eu posso
editar a cor do texto. Eu posso editar a fonte. Então, qual fonte eu vou usar? Eu incluí uma fonte para você. Lembre-se de que, na pasta UI, fontes, incluí
essa fonte para você. Portanto, você também pode
selecioná-lo aqui
na família de fontes. Aqui embaixo temos animação de interface de usuário. Talvez entremos nisso. Não tenho certeza, mas não é muito
importante agora. Então, vou
clicar com o botão direito do mouse aqui e
clicar em Fechar porque realmente
não precisamos disso. E a última coisa importante aqui
é
que você pode
clicar em compilar. Diz que o sujo
precisa ser recompilado. E o que isso faz é apenas verificar se você tem algum
erro no seu código. E, no momento, não temos
realmente nenhum código, então tudo ficará limpo aqui. Mas se o fizéssemos, isso lhe daria um aviso e lhe diria
que algo está errado. Então você pode tentar brincar aqui e tentar
tirar uma imagem, por exemplo, coloque-a aqui, você
pode redimensioná-la. Você pode ver quais detalhes
você tem de uma imagem, por exemplo, o pincel. Você pode
ouvir na imagem, você pode mudar a imagem,
por exemplo, este hambúrguer aqui. E agora você pode ver que
pode alterar o tamanho dele. E você também pode alterar
o tamanho aqui Clicar nessas pequenas
setas significa apenas que você queria redefinir para o valor padrão.
Então, clicando nele. E o valor padrão é 15150. E você pode ver que quando eu
mudo o tamanho aqui, ele realmente não é afetado. E isso é porque
você está, na verdade, redimensionando toda a
imagem dessa forma. Você precisa clicar em
Dimensionar o conteúdo se
quiser que ele entre
em vigor aqui. Então, analisando nossa redefinição
para o valor padrão, esse é o tamanho do valor padrão para este hambúrguer. Sim,
e foi isso. Isso é muito, muito simples. Então, o designer projetará
a interface do usuário na próxima lição. E no gráfico, codificamos a
funcionalidade da interface do usuário. Mas, por enquanto, vamos nos
concentrar em projetar a interface do usuário. Então, antes de terminarmos esta lição, vou excluir todas essas coisas,
incluindo o Canvas. Vamos compilar, vamos salvar, salvar tudo aqui e fechá-lo. E vamos passar
para a próxima lição.
6. 2.02 Projetando a interface principal: Tudo bem, agora estamos
prontos para criar
a interface principal, caso você ainda não tenha seguido a lição anterior. Vá em frente. Na pasta UI, você pode clicar com o botão direito
do mouse na interface do usuário e criar um Widget Blueprint. E este é o Widget Blueprint para a interface de usuário principal que já
criamos. Vamos clicar duas vezes nele.
E antes de começarmos, quero mostrar o que
vamos fazer. Por isso, é sempre bom
ver o que vamos
fazer antes de você fazer isso. Então, podemos visualizá-lo. Aqui no menu I. Só
teremos esse botão. Este é o
botão de inventário que pode ser clicado e você
abre o inventário. Então, muito, muito simples. Isso é o que estamos
tentando fazer. Então, vamos voltar
à nossa visão aqui. E como eu disse antes, temos que adicionar um Canvas
antes de adicionar qualquer coisa. Então, aqui em cima, se você
pesquisar o painel de tela, você pode arrastá-lo para a
hierarquia aqui embaixo. E agora adicionamos
o painel de tela para o botão, para
o botão de inventário. Obviamente, precisamos do botão UI aqui para que possamos
arrastá-lo para aqui. Mas, como você viu antes, precisamos de um ícone na
parte superior do botão. E é por isso que usamos
algo chamado sobreposição. Se você pesquisar por
Overlay, você
também pode encontrá-los aqui embaixo. Assim, você pode clicar
nessas setas para encontrar itens que podem ser
adicionados ao seu Canvas. Então, este é o que
queremos adicionar agora chamado de sobreposição, ou você pode
procurá-lo aqui. Então, se você não sabe
todas essas coisas,
pode ser difícil de entender, mas faça isso apenas uma, duas ou três vezes. E é muito fácil porque
você faz isso o tempo todo. Então, como precisamos de um botão
e um ícone em cima dele,
precisamos de algo
chamado sobreposição. Então, deixe-me excluir
esse botão novamente. E eu vou arrastar essa
sobreposição para a tela. E geralmente
eles são adicionados aqui. E para este agora, vamos adicionar um botão. E depois adicionamos uma imagem. Este é o ícone
que estará no topo do botão. Agora, deixe-me arrastá-lo
até aqui para que
possamos ver como é. Então, agora, vamos
clicar no botão e
projetá-lo. Se você quiser. Você pode desativar
a imagem por enquanto. Então você pode
clicar nesse olho aqui. Isso apenas destaca
a imagem por enquanto. Vamos clicar no botão
e no estilo aqui, vamos mudar sua aparência. No final, incluí para
você os botões
na pasta de botões da
interface do usuário. Eu incluí botões
para você que podemos usar. No normal.
Vamos mudar a imagem para esse único
botão, raiz quadrada azul. Para o tamanho, podemos
clicar nessa seta para redimensioná-la para
o normal. Agora você pode ver que
estou ampliado mais sete. Portanto, é muito
importante saber isso. Estou ampliado mais sete, então não é isso
que vai parecer quando eu jogar o jogo. Vai ficar assim. Então, se eu diminuir o zoom, é
assim que
vai ficar. Então, um para um aqui. Agora, geralmente quando
você faz um botão, a cor é cinza
por algum motivo. Eu não sei por quê. Então,
clicando nessa tonalidade aqui, vamos mudá-la para branco. Então, a cor verdadeira
está aparecendo aqui. E em vez de fazer uma caixa
redonda em torno de dólares,
dê uma vantagem estranha ao redor do botão e
eu não quero isso. Eu quero ir aqui, clicar em dólares em vez disso. E você pode ver
que, ao redimensionar a imagem, ela parece muito estranha. Mas se você usar uma caixa e
definir a margem para 0,5, poderá redimensioná-la sem perder os detalhes
desse botão. Então você pode ver que eu posso redimensioná-lo. E parece bom. Se você não usou
a margem de 0,5
, ficará assim. Então, dê uma margem de 0,5 e tudo ficará bem. Ok, então clicando aqui, vamos até o Hubbard e vamos selecionar o botão,
quadrado azul pairado. E para este,
na verdade, o que você pode
fazer é algo muito rápido. Eu uso isso quando
desenvolvo meu jogo. Eu posso mudar e
clicar com o botão direito aqui em cima, ou você pode simplesmente clicar com o botão direito do mouse
e clicar em Copiar. Normalmente, apenas pressiono Shift
e o botão direito do mouse. Então, desloque o
botão direito do mouse para copiar isso. E você pode mover o botão
esquerdo do mouse para
colá-lo em cima daqui. E ainda por cima, você
pode ver que é muito rápido. Então você tem todas as informações. E então lembre-se de
trocar esses dois. Aqui. Restam 12. Novamente, lembre-se de
alterar o tamanho aqui. Acho que, para este, vou
usar algo como 90. Este é o padrão, então o padrão é
68 e esse 190. Vou clicar com o botão direito novamente. Vou segurar a
tecla Shift e clicar com o botão direito aqui novamente para copiá-la e segurar tecla Shift e clicar com o botão esquerdo para colá-la sobre
esses tamanhos de imagem. Agora, você pode se perguntar por que
não dimensioná-la aqui no x. E isso ocorre porque
ela será
dimensionada automaticamente em pouco tempo
quando adicionarmos a imagem. Por enquanto, vamos apenas compilar
e deixar esse botão. Vamos até a imagem. Então, clicando na imagem, clicando nesse ícone
para ver a imagem. E para a imagem, precisamos
encontrar o ícone da mochila. Então é isso aqui, ou você pode
procurá-lo aqui, selecionando o ícone da mochila. E quando projetei a interface, vi que 100 por 100 era
um ótimo tamanho para isso. Vou
mudar esse para 100 por 100 e o tamanho da imagem. Você pode ver se eu clicar
nesse botão padrão, o padrão é 150. Vou
reduzi-lo para 100 por 100. E em vez de fazer
essa sobreposição dessa forma, em vez de
redimensioná-la dessa forma, vou
clicar em Dimensionar para conteúdo. Portanto, essa sobreposição agora está dimensionada para qualquer conteúdo
que esteja dentro dela. Então, esse botão aqui, em
vez de tê-lo
aqui neste canto, vou alinhá-lo
horizontalmente. Então, vai preencher toda
a sobreposição. Esse botão agora está preenchendo toda
a sobreposição. Isso é o que isso significa. E eu vou alinhá-lo
aqui, verticalmente, na parte inferior. Então, está na
parte inferior da imagem. Vou apenas alinhá-lo
ao centro do botão. Clicando na
imagem, clicando no alinhamento
central para a
vertical e a horizontal. Então, está bem no
meio dessa sobreposição. Agora precisamos empurrar
essa imagem para cima. Você pode usar a tradução
aqui embaixo na transformação, ou eu vou usar
o preenchimento aqui em cima. Então, para o preenchimento
na parte inferior, isso significa que você está empurrando a
imagem de baixo para cima. Então, vou
empurrá-lo em 15 pixels. E você pode ver que eu coloco
a imagem aqui e ela está
ótima agora. Vou empurrá-lo pela 12ª para
a esquerda e pela
12ª para a direita. Então, damos mais espaço
aqui para esse botão, então ele está
muito melhor agora. Agora, a última coisa
que precisamos fazer,
então, em vez de ter esse
botão aqui no meio, o que podemos fazer é colocá-lo aqui embaixo. Então, o que você pode fazer aqui
é ver se você definir a posição como 00 aqui, você vê que ela se encaixa
neste canto aqui em cima, mas eu quero que ela esteja aqui
embaixo na minha tela. Não quero que meus botões
apareçam aqui. Quero que meu botão
esteja aqui embaixo. O que você pode fazer aqui é alterar o ponto de ancoragem. Então, clicando em sua sobreposição, você tem algo
chamado âncoras. Clicando aqui. E você pode mudar o ponto de
ancoragem para aqui embaixo. O ponto de ancoragem significa que, digamos que você tenha arrastado esse botão
até aqui dessa forma, e ele parece bom. E você não está mudando
o ponto de ancoragem. Então, o que isso significa é quando
a janela do jogo fica menor. Então, vamos pegar isso aqui. E digamos que o
botão esteja aqui. Se a janela do jogo
ficar menor assim, se alguém redimensionar seu jogo, o
botão voará para
cima até este canto. Então, se sua tela for
muito pequena assim, o botão está realmente
aqui em cima e não aqui embaixo. Portanto, não parece correto. E isso é o que significa
ancoragem. Você está apenas dizendo ao jogo onde seu botão está inicialmente. Vou ancorá-lo aqui em vez de colocar uma
posição em 00. Você pode ver que
agora está fora da tela. E para entrar
na tela, você precisa usar isso
chamado alinhamento. E você pode ver que é zero
ou um. Você pode ver se eu escrever um aqui, 0,5, é no meio. Esse é o x, esse é o y. E 0,2 e assim por diante. Então você pode ver se eu escrevo um, eu coloco aqui. E, novamente, o alinhamento para o y, você também precisa colocá-lo em
um para empurrá-lo dentro desta janela para que você possa brincar
com o alinhamento. Normalmente usamos 00.5 para
colocá-lo no meio ou em um. Nós o colocamos aqui assim. Ok, então, em vez de colocá-lo diretamente aqui na tela, quero dar a ele um
pouco mais de espaço para sites. Então, vou clicar na posição de
sobreposição para o x -35 e posicionado
para o y -35. Agora, temos um pouco mais de
espaço aqui ao lado, então são porcas que se
fixam diretamente aqui na tela. Tudo bem, vamos compilar. E a última coisa que você pode
fazer, uma prática muito boa. Você pode ver se você
for até o gráfico, você pode ver que se chama
botão e imagem. Essas são as variáveis
que foram criadas porque você
projetou essa interface de usuário aqui. E você pode ver
que esses são os nomes deles. Eles também estão aparecendo como
variáveis em seu código. No entanto, é uma prática muito ruim
deixá-los assim porque se você tiver vários
botões como esse, por exemplo, não
sei realmente
qual é qual. Por exemplo, se você tem um
botão para inventário, um botão para suas habilidades, estatísticas e qualquer outra coisa, você
realmente não sabe o que é se
eles são chamados assim. Então, deixe-me deletar tudo isso. E, a propósito, se você quiser
saber como eu dupliquei,
basta clicar com o
botão direito do mouse e clicar em Duplicar ou clicar em Controle D. Ok, então vamos mudar
o nome aqui. Você pode clicar em F2 no seu teclado clicando
nesta aparência F2. E eu vou
chamá-lo de btn para botão. E vamos chamá-lo de inventário. mesmo vale para a
imagem, o inventário
de imagens e a sobreposição. Ove para Overlay, e
chame isso de inventário. Ok, agora
terminamos com a interface principal. Vou ir um
pouco mais rápido
nos outros projetos de widgets. Mas agora você sabe
o básico e como criar algo muito simples. Vamos salvar tudo,
encerrar isso e passar para a próxima lição.
7. 2.03 Projetando os botões de categoria de inventário: Agora vamos criar o botão da categoria de
inventário aqui na pasta UI. Novamente, vamos clicar com o botão direito do mouse na interface
do usuário. Crie um novo Widget Blueprint. Use ou selecione
o widget do usuário. E vamos chamar isso de uma categoria de
inventário, assim. Agora vamos entrar nisso aqui. E assim como antes, lembre-se de que precisamos adicionar um Canvas antes de fazer qualquer coisa
dentro daqui. Então, vamos arrastar esse painel de
tela e editar. E agora podemos começar a
criar a categoria. Então, para a categoria, novamente, quero mostrar o que
vamos fazer. Nós vamos fazer isso. Vamos criar
esse botão aqui. Esse ícone será alterado dependendo da
categoria que temos, mas é assim que parece. Muito, muito simples. Novamente, vamos voltar aqui. Vamos adicionar uma sobreposição. Assim como antes, precisamos de um botão com um
ícone em cima. E eu vou apenas adicionar uma
sobreposição dentro desta. E eu vou
te mostrar o porquê daqui a pouco. É um pouco
confuso agora. Então, vamos procurar o botão novamente e adicioná-lo a
essa sobreposição aqui. E vamos pesquisar a imagem
e adicioná-la à sobreposição. Assim como antes. A coisa extra é que
temos essa sobreposição aqui
e eu vou te mostrar o porquê. Portanto, para os botões de categoria, não
precisamos realmente
da tela inteira, assim como fizemos com
a interface principal. Então, lembre-se de que, para o
menu, eu estava usando todo
esse Canvas e estamos
adicionando esse botão aqui embaixo, quem está jogando o menu
ou a interface principal. Então você pode imaginar que, se
estivesse jogando, o botão está aqui embaixo, mas em qual categoria
realmente não precisamos de todo o Canvas. Então, podemos clicar
na tela aqui, ou simplesmente ir até aqui e na tela de preenchimento e selecionar
essa chamada desejada. Nós realmente não precisamos de todo
o espaço. Só precisamos do que
projetamos aqui embaixo. Então, clicando no botão novamente, vamos alterar essas configurações. Mas você pode ir para
a interface principal se
quiser clicar nesse botão. E, novamente, segure Shift
e clique com o botão direito para copiar. E segure Shift e
clique com o botão esquerdo para colar. Então, vou
colar essas informações. E para esse tamanho aqui, vou
fazer um para um. Veja por um e vinte, esse
é o tamanho que eu quero. E você pode ver que não está
realmente mudando no y aqui. seja, lembre-se de antes de eu
dizer que você pode clicar nessa sobreposição e
clicar em Dimensionar o conteúdo, forma a dimensionar de acordo com o
tamanho do conteúdo. E para este eu
vou fazer com que seja 12120. Basta prestar atenção
novamente ao zoom aqui. Isso é o que
parece, um por um. É assim que vamos
parecer, não assim. Ok, então vamos
copiar o tamanho da imagem
colada aqui embaixo. E clicando nessa imagem, quero alinhá-la no
centro desse botão. Então, clicando nesses alinhamentos central, horizontal e
vertical. E para a imagem, vou usar
a mochila novamente. Realmente não importa o que você está usando
aqui, porque você mudará essa imagem dependendo da
categoria que você tem. Mais tarde, por exemplo,
criaremos uma categoria para categoria
de consumíveis de qualidade
alimentar e criaremos uma
categoria ou armas. Então, dependendo
da categoria, vamos mudar
essa imagem para que não importe realmente o que
você selecionou aqui. Eu só vou fazer
o tamanho da imagem 85, 80. Assim como antes. Lembre-se de que pressionamos o
ícone aqui no menu. Então, vamos fazer a
mesma coisa com o fundo. Eu só vou
escrever seis aqui. Você pode simplesmente testá-lo. Você pode escrever 1018. Veja o que funciona para você, mas seis funcionaram
para mim e para a esquerda e para a direita, vou escrever novamente
12 por 12, assim. Então, caso o botão
fique muito pequeno, ainda
tenho algum espaço aqui. Então eu acho que foi isso. Então, vamos entender que
temos tudo e tudo parece bem. Vamos compilar e
salvar tudo. A última coisa que você precisa
mudar é antes que a esqueçamos, está aqui na visibilidade,
na visibilidade. O que é isso. Agora, quando
você joga e quer clicar nesse
botão atrás dessa imagem, essa imagem
bloqueará seu botão e você não
conseguirá pressioná-la. Isso ocorre porque a
visibilidade está definida como
Visível para essa imagem. Então, o que você precisa mudar para
é que nenhum sucesso seja testável. O que diz aqui na descrição da
dica de ferramenta é
visível, mas não testável, o que significa que não pode
interagir com o cursor. E isso é o que queremos, é apenas uma imagem para
mostrar que esse é o botão para a categoria, ou neste caso para o
inventário aqui no menu I. Então temos que fazer a
mesma coisa aqui. Então, clicando na interface principal, alterando a divisibilidade
para festival sem sucesso. Agora podemos clicar
nessa imagem e apertar o botão mesmo que essa
imagem esteja na frente dela. Então, vamos compilar. Lembre-se de salvar tudo. Assim como antes. Vamos mudar os
nomes aqui, botão, categoria e categoria de imagem
e sobrepor aqui, categoria. Ok, então a razão pela qual eu
adicionei essa sobreposição aqui, primeiro, vamos mudar o ponto de
ancoragem para o meio. Então, vou mudar o ponto de
ancoragem para o meio. E lembre-se de que, se você escrever zeros, zero para a posição, você pode
ver que ela se ancora assim. Se você se lembrar
da lição anterior, precisará alterar
o alinhamento. Então eu te disse antes de usarmos
00,5 ou 1,0. 0,5 é o correto se quisermos que
fique no meio. Então, 0,50, 0,5, e você
pode ver minha posição 00. Agora, o botão aqui está
no meio dessa sobreposição. motivo pelo qual criei dois deles é porque agora, aqui
na segunda sobreposição, posso usar esse preenchimento se
você não precisar sobrepor. Imagine que, se você só
tiver esse, provavelmente não tem acolchoamento. Se isso não for como uma criança. Você pode ver que essa sobreposição
é filha dessa sobreposição. E para crianças, podemos
usar esse acolchoamento aqui. E estamos fazendo esse estofamento. Vamos escrever cinco por enquanto, eu vou escrever cinco. E isso só dá
cinco na esquerda, na parte superior, direita e inferior. Então, a razão pela qual eu faço isso é mais tarde, quando
criamos as categorias dinamicamente, há algum espaçamento
entre as categorias. Por exemplo, imagine se você tivesse
cinco categorias aqui embaixo. Há algum espaçamento
aqui entre os botões. Se você não tivesse o espaçamento, eles ficariam um em
cima do outro. Se você quiser remover
essas linhas tracejadas, a
propósito,
um truque rápido , basta clicar aqui e
ver como fica
sem todas essas linhas. Ok, vamos guardar tudo o
que era para aqui. Vamos
fechá-lo, salvar tudo e passar
para a próxima lição.
8. 2.04 Projetando as fendas de inventário: Vamos agora projetar
os slots de inventário. Então, vamos clicar na interface do usuário. Vamos clicar com o botão direito do mouse aqui na interface
do usuário e criar um esquema de widget,
como o widget do usuário. Então, o mesmo que
temos feito até agora. Bem, este, slots de inventário. Portanto, esses são
os slots em que os itens serão exibidos ao
clicar nesse slot de inventário. Assim como antes,
você precisa ter um Canvas antes de
podermos fazer qualquer coisa. Então, adicionando uma tela subindo
aqui e a tela de preenchimento, selecionando o desejado, exatamente como fizemos
para a categoria. Então, aqui dentro, agora
podemos adicionar uma sobreposição, e eu vou
adicionar outra sobreposição dentro dela para que possamos
colocar um pouco de preenchimento como
o que fizemos para a categoria. E eu vou adicionar um
botão, na verdade apenas uma imagem. Nós realmente não
precisamos de um botão aqui. Vou adicionar uma imagem
dentro dessa sobreposição. E essa imagem vai
ser o lodo. Então, se formos até aqui, temos esse chamado slots de
inventário, ou esse slot de inventário. Vou ouvir no sorteio selecionar dólares e escrever
a margem para 0,5, só para que possamos aumentá-la
e não parecer estranho. Então, se você tiver a
imagem como padrão, verá que perderá qualidade. Estamos mudando para a
escrita de Bach com 0,5 na margem, podemos redimensioná-la
sem perder a qualidade. Vou clicar nessa
sobreposição aqui e novamente, selecionar o tamanho do conteúdo. E para esta imagem aqui, para o compartimento de inventário, vou fazer com
que ela seja de 90 por 90 no tamanho. Então, parece assim. E para o alinhamento
em vez de alinhamento, isso realmente não
importa neste caso, mas para que fique mais limpo, vou alinhar
horizontal e verticalmente. Então, a coisa toda
aqui para essa sobreposição, eu quero que ela fique no centro. Então, novamente, o
ponto de ancoragem para o centro, alinhamento 0,50, 0,5 e o tamanho ou
posição em zero. Por zero. Ele fica no centro. E eu vou aqui
na sobreposição novamente,
dê um pouco de preenchimento. E, assim como antes,
vou dar um
par de cinco. Portanto, temos espaços entre
os slots de inventário. E isso ficará muito mais
claro quando realmente
criarmos o inventário geral. E você pode ver o
espaço entre os slots. Agora precisamos ter um item dentro desses espaços de inventário. Vou adicionar outra
imagem a essa sobreposição. Vou centralizá-lo aqui. Vamos selecionar um ícone aleatório. Isso realmente não
importa. Estamos mudando isso dinamicamente no jogo. Então, vou
selecionar esse ícone para encontrar, vamos fazer isso de 160 por 60. E nós realmente não
precisamos transformá-la em uma caixa porque é
apenas uma imagem, um ícone. E a última coisa que
queremos fazer é texto aqui embaixo,
como um número. Se você tem que conhecer
, precisa mostrar
um número de cinco. Então, vamos pesquisar o
texto aqui em cima e arrastá-lo até a
sobreposição, como este texto. Alinhe-o à parte inferior aqui verticalmente e à
direita horizontalmente, para que fique aqui embaixo. E deixe-me
escrever um número, por exemplo,
23. Por enquanto, como
espaço reservado para a família de fontes, vou selecionar,
vamos ver, talvez o em negrito, o espelho e o negrito. Vou fazer
o tamanho para 18. E eu vou apenas
dar um esboço. Então, clicando aqui, você pode
dar um esboço e ver o esboço aparecer aqui se
você escrever 23456 e assim por diante. Então, escrevendo talvez dois, e aqui para a cor do contorno. Então, clique na cor do contorno e selecione uma cor
aleatória aqui. Talvez algo assim, algo que se encaixe
com o plano de fundo. Você também pode usar
o seletor de cores. Escolha essa cor de fundo, clique nela novamente aqui e volte para a
cor do contorno e
deixe-a um pouco mais escura, algo
assim. Parece bom. Clicando em Ok, um pequeno efeito que parece legal. Então, aqui na sombra, se você apenas criar o, dê um pouco
de sombra, por exemplo, 1,2 no y. No momento, ele não está
aparecendo porque seu alfa não está definido como zero, então defina-o como um e você poderá ver as sombras realmente
aparecendo atrás do texto. Vou definir
este para 1,2. E um efeito interessante é que, se você tornar essa cor de sombra
igual à cor do contorno, obterá um efeito 3D interessante. Então, basta clicar nela, copiar a cor linear hexadecimal, indo para a cor da sombra,
colando-a aqui embaixo. Você pode ver que isso dá
aquele efeito de sombra 3D, que parece muito legal. Agora, quanto à posição, você pode ver que está
aqui na borda. Eu só vou, em vez
de usar o preenchimento, vou até aqui
e a tradução, se eu conseguir encontrá-la aqui embaixo. E no x, eu vou
simplesmente
apertar , algo assim. Talvez se eu diminuir o zoom para 11 aqui para que eu possa ver como realmente
é. Talvez algo
assim esteja bem. Se eu escrever apenas cinco, por exemplo, se tivermos cinco encontros, é
assim que vai parecer. Novamente, você pode clicar
nesse botão para remover os traços e
ver sua aparência. E eu acho que parece legal. Então, podemos usar isso. Vamos compilar, salvar tudo. Novamente, lembre-se de
renomear seus itens aqui. Então, este é um espaço de
inventário de imagens. Este é um item de
inventário de imagens. E esta é, você pode
chamá-la de item uma cidade. Talvez em vez de
chamar de item de inventário, eu possa simplesmente
chamá-lo de item qualquer coisa. E para essa sobreposição, vou deixar que eles não sejam muito
importantes agora. Ok. Então foi isso. E lembre-se novamente,
talvez precisemos
mudar isso para gostar da visibilidade para não ser testável novamente para
não sermos afetados. Mas eu não tenho certeza por enquanto. Vamos deixar como está e
podemos mudar isso mais tarde. Vá para Arquivo, salve tudo e vamos
para a próxima lição.
9. 2.05 Projetando o inventário: Vamos agora criar
o inventário. Para o inventário,
o que vai
ficar é
algo assim. Então, projetamos
o compartimento de inventário, e é isso que eu quis dizer sobre o espaçamento entre
os slots de inventário. É por isso que adicionamos
preenchimento à sobreposição. Portanto, temos uma pequena distância entre
esses espaços de inventário. Então, isso é o que
vai parecer. As categorias estão aqui ao lado. Então, vamos projetar isso. Então, vamos clicar com o botão
direito do mouse novamente na interface do usuário, no esquema do
widget. Vamos chamar isso de inventário único. Então, dentro daqui, novamente, como antes,
vamos adicionar uma tela. E para o inventário,
você precisa visualizar o que
está tentando fazer. Então, para qualquer interface de usuário que você esteja
tentando fazer. Então, aqui o que estamos
tentando fazer é colocar as categorias
aqui ao lado
e, em seguida, temos o inventário. Então, precisamos de algo
chamado caixa horizontal. Portanto, precisamos que as categorias
estejam ao lado do inventário. E aqui vamos
usar algo chamado caixa horizontal. E você pode simplesmente adicionar elementos para ver o que está fazendo. Então, se você apenas
pesquisar um botão, por exemplo, e adicioná-lo
à caixa horizontal. Se você apenas Controlar
D para duplicá-lo, poderá ver quais elementos se relacionam
horizontalmente entre si. Então, vamos deletar esses botões. A caixa horizontal
conterá uma caixa vertical na qual os botões da categoria
serão alinhados verticalmente. E então teremos uma sobreposição onde temos nosso inventário.
Simples assim. Temos na caixa horizontal, os bugs verticais
para as categorias. Vamos renomeá-lo por enquanto. Vou deixar vb para caixa vertical e vou
chamá-la de x inquéritos. E para a sobreposição, vamos chamá-la de
inventário assim. Portanto, a sobreposição
do inventário consiste em uma imagem. Precisamos do plano de fundo
para o inventário. Então, adicionar uma imagem a
ela e essa imagem, em vez de definir
um tamanho para
ela, ela será
preenchida horizontal e verticalmente. Você pode ver que não está sendo
preenchido horizontalmente. E isso ocorre porque
essa sobreposição, que é a mãe
dessa imagem, também não
está preenchendo. Então, em vez de automático aqui, vamos clicar em Preencher e ele
preencherá tudo. Então, o que quer que eu
decida mudar a caixa horizontal de tamanho dois, ela preencherá
esse espaço aqui. Agora, clicando de volta na imagem, vamos mudar esta
para o botão quadrado azul. Eu também uso isso
como plano de fundo. Parece bom. Agora, na verdade, apenas para os
botões e desenhe como uma caixa, cinco na margem, para não perdermos qualidade. Então, agora temos o plano de fundo
para o inventário. E agora o que
precisamos fazer é ter um texto aqui
que diga inventário. E então precisamos das preguiças do
inventário aqui embaixo. Então você pode imaginar que
precisamos de uma caixa vertical. Vamos procurar uma
caixa vertical adicionada à sobreposição. Deixe-me alinhar
essa caixa vertical, apenas preencher a coisa toda. E precisamos de um pouco de
espaçamento porque, em vez de desenhar nas bordas desse inventário, vou adicionar um
pouco de preenchimento a ele. Então, talvez algo como 30. Só vamos adicionar
coisas aqui para
não atingirmos as bordas do plano de
fundo na parte superior. E talvez eu só vá
escrever 25, assim. E agora vamos adicionar um texto. Este texto só vai
dizer inventário. Vamos alinhar esse
texto ao meio. Vamos mudar a fonte aqui. E eu vou
selecionar esse mais ousado. E vamos mudar o tamanho. Talvez deixe que seja assim. Na verdade, é bom. Se você tiver apenas esse zoom para um por um. Você pode ver como é. Para este, vamos
deixar que diga inventário,
inventário, e podemos
adicionar um pouco de sombra a ele. Eu só vou fazer com que
seja 23,4, o Alpha 0.3. Agora você pode ver que temos uma
sombra sutil abaixo desse texto, o que faz com que ele pareça muito melhor
e não tão plano. Em seguida, vamos adicionar
os slots de inventário. Então, para fazer isso, precisamos de
algo chamado painel de grade. Então, se procurarmos apenas por uma grade, teremos esse ótimo painel. Vamos adicioná-lo a
essa caixa vertical aqui no grande painel. Basta ir até aqui
e pesquisar o inventário. Agora você pode ver os
esquemas de widgets que
você criou aqui. Então, temos a categoria
e temos os slots. Então, pegando esse slot e
adicionando-o ao painel da grade, você pode ver sua aparência. Clique neste, clique em
Controle D para duplicá-lo. Em seguida, altere a linha para uma. E agora podemos
ver como é. Então, duplique isso novamente e escreva um aqui
na coluna. Eu só queria
ver como seria. Vou copiar isso de novo, certo, dois na coluna. E isso é o que parece. Você pode ver isso. Obviamente, não
parece correto. Então, temos que
descobrir o que está errado. Agora podemos clicar nessa sobreposição aqui e
tudo parece correto. Temos que clicar nessa caixa
horizontal e você verá que parece correta
se eu redimensioná-la. E em vez de deixar
isso para a esquerda, podemos clicar nesse alinhamento
intermediário. Então, o sabor está sempre
no meio. No entanto, essa caixa horizontal
está bem, parece boa agora. Em vez disso, podemos clicar
em Tamanho do conteúdo. Portanto, o tamanho do estoque
está indo para, ou o plano
de fundo do inventário. Será do mesmo tamanho qualquer conteúdo para
o inventário. Tudo bem, então a mesma coisa
para os dólares verticais. Então, se você for até aqui e
pesquisar inventário, pegue essa categoria e
arraste-a até a
caixa vertical que fizemos antes. Vou clicar
no Controle D apenas para copiá-lo para
que eu possa ver sua aparência. Você pode fazer isso dessa maneira ou
alinhá-lo ao meio. Então, se eu apenas duplicar isso
e aumentá-lo, para que eu possa ver como fica. A propósito, vamos
excluí-los, vamos adicionar tudo
isso dinamicamente, dependendo dos itens
que saqueamos
e não deste aqui, temos apenas três categorias. Então, em vez de deixar assim, vou clicar na caixa
vertical e alinhá-la
ao centro aqui e talvez
alinhá-la horizontalmente
aqui à esquerda. E para o preenchimento, vou adicionar um pouco de preenchimento
à direita porque
quero um pouco mais de espaçamento
entre esses dois. Clicando na caixa
vertical,
adicionando, adicionando à direita,
talvez dez, assim. E acho que ficou bom novamente e podemos
clicar nesse inventário. há realmente nenhuma razão não
termos
botões ao redor. Mas caso você tenha
um botão em algum lugar aqui, altere a visibilidade do
texto para nenhum clique testável porque realmente não precisamos
interagir com ele com
o cursor do mouse. Ok, agora vamos compilar
e salvar tudo. E isso é, na verdade,
o que vai parecer. Assim, podemos excluir todos
esses espaços de inventário. Por enquanto, podemos excluir todas
as categorias, porque vamos
adicioná-las dinamicamente
durante o jogo. Então, agora o que você pode
fazer é simplesmente mudar o nome de todas elas. Então, na verdade, parece bom
e você sabe o que, é. Ótimo painel. Estas são as grades, o inventário. Exatamente assim. Vamos
renomear tudo. E às vezes algumas coisas não
são muito importantes para mudar o nome, pois essa
é o inventário de imagens,
talvez a imagem de fundo
ou o plano de fundo. Esta é apenas a caixa horizontal. Agora precisamos alinhá-lo aqui. Então, a âncora é, eu vou
desenhar o inventário aqui embaixo. Então, clicando na âncora, emprestando-a para aqui embaixo. E se você escrever
a posição como zero, novamente, como antes, ela está realmente fora
da tela. Então, assim como antes,
você precisa ajustar o alinhamento um por um. E vou dar
um pouco mais de
espaço para os sites. Então, escrevendo a
posição para -35 -35. Agora temos um pouco mais de espaço. Então era isso para
o inventário. Vamos salvar tudo,
vamos
fechá-lo e passar
para a próxima lição.
10. 3.01 Exibindo a interface principal: Agora é hora de exibir
a interface principal na tela. Essa é a interface principal que
estamos criando. E
consiste apenas em um botão, que é o botão para
abrir o inventário. Agora, o que queremos
fazer geralmente é trabalhar com a interface do usuário dentro
do controlador do player. Já temos um
controlador de jogador neste jogo. Se você acessar os planos, temos este chamado PC. Este é o controlador do player. Vamos clicar duas vezes
nela e essa visualização será aberta quando a
perda do blueprint estiver vazia. Então, temos que clicar em Abrir, abrir o editor de plantas completo. Então, eu não fiz
nada aqui dentro, embora esteja totalmente vazio e novo. E o que podemos fazer aqui é simplesmente excluir
tudo por enquanto. Mas estamos tentando usar esse chamado se
você clicar com o botão direito do mouse aqui neste editor e
escrever cria widgets. Lembre-se de que estamos trabalhando
com esquemas de widgets. Então, isso é o que criamos
aqui, um Widget Blueprint. Então, se você simplesmente clicar com o botão
direito do mouse aqui, à direita, criar widgets,
você encontrará esse nó aqui. Essa função aqui criará
nosso widget. Então, vamos selecionar o que
queremos criar. Queremos criar a interface principal,
esta, a principal do WB. Vamos clicar nisso. E
agora vamos clicar com o botão direito do mouse e promover isso para
uma variável que eu escrevo, eu gosto de ter minha
interface de usuário em variáveis, vou promover isso para uma variável. E digamos que não
seria principal novamente. Ok, agora nós o temos e, para
exibi-lo na tela, agora você pode clicar em compilar. Eu costumo fazer isso se você
me vê fazendo isso o tempo todo. É só verificar
se você tem
algum bug em seu código. Se fizer
isso, te dará um ingresso,
significa que está limpo. Então, está tudo bem até agora. Ok, então o que podemos fazer aqui
é arrastar essa variável. E se você não
criou uma variável, você pode simplesmente arrastar
a partir daqui. Então arraste daqui e diga
Adicionar à janela de visualização. Fazendo isso. Ok, agora fizemos
o Add to Viewport. E se você clicar em Jogar agora, se você já conhece os planos, isso não acontecerá. Então, se você clicar em Jogar e
ver que nada realmente acontece. Nada como se não houvesse um botão
na nossa tela, certo? Agora. Se você já conhece os blueprints, sabe que precisamos de um
evento para executar o código. Portanto, no Blueprint, você sempre precisa de um evento para executar o código. Você não pode executar
código sem eventos. Então, se você clicar com o botão direito do mouse aqui e
pesquisar por começar a jogar, temos algo chamado
um evento chamado um porco pode jogar. Clique neste. Se
quiser ver outros eventos, você sempre pode clicar com o
botão direito do mouse e pesquisar. Você pode simplesmente pesquisar
eventos e ver todos os eventos
que você pode escolher. Por exemplo, não é destruído o
evento no tick, que ocorre 60 vezes por segundo. E talvez qualquer dano
usado quando a camada foi
danificada e assim por diante. Então, vamos excluir isso por enquanto. Por que precisamos
agora de algo muito básico chamado Begin Play. Portanto, esse evento apenas mostra o que acontece quando você começa a
jogar. E vamos conectá-lo aqui. Ok? Então, quando começarmos a
jogar, queremos criar esse widget
e adicioná-lo à janela de exibição. Mas vamos compilar, vamos salvar
tudo o que eles podem jogar. E agora você pode ver o botão está aparecendo
aqui na tela. Ok? Então, tudo está funcionando. E se eu minimizar
isso por enquanto, clique nesses três pontos, número de jogadores,
vou mudar para dois. E para o modo net, por enquanto, vou clicar em jogar
como servidor escutado. Vou clicar em jogar. E na verdade está no meu segundo
monitor, que está aqui. Então agora temos dois jogadores. E você pode ver que os dois
têm esse botão. Ok, Nice. E agora você pode ver
que temos um bug aqui. E está dizendo que X não
está tentando ler a propriedade
feita pelo WB, que é essa. Não sabe o que
isso realmente é. O que x não é significa,
significa que essa variável está vazia. Eu não sei o que é.
E isso é porque estamos trabalhando no modo multijogador.
Você não pode fazer isso. Isso é bom para um jogador, mas para o modo multijogador, você não
pode fazer isso diretamente. No modo multijogador, temos
algo chamado cliente e temos algo
chamado servidor. Alguns cliques em Jogar. Você pode ver aqui
que diz servidor. E aqui diz que cliente terá o
cliente e o servidor. Ok, então geralmente a interface do usuário é executada
apenas no cliente, nunca no servidor. Na próxima lição,
explicarei mais
detalhadamente o servidor e o
cliente. Mas, por enquanto,
saiba que a interface precisa ser executada pelo cliente. Você não pode executar a interface
do usuário por meio do servidor. Então, o que temos que fazer é
simplesmente desconectar isso. E para desconectá-lo rapidamente, você pode clicar em Alt no
teclado e clicar nele. Isso desconectará os pinos. E o que você quer
fazer é clicar com o botão direito aqui e escrever eventos personalizados. Truque rápido para fazer isso também. Você pode escrever em um ponto e
isso aparecerá rapidamente. Então, criando esses eventos personalizados, vamos chamá-lo de widgets de
inicialização. Simples assim. E lembre-se de clicar neste evento
nas réplicas, clicar em executar por proprietário,
cliente e confiável. Vou explicar para você na
próxima lição o que isso significa. Mas, por enquanto, certifique-se de que
ele seja executado no cliente e seja confiável e você o
conecte aqui. Portanto, estamos nos certificando de que a interface do usuário seja executada
com o cliente. E agora os esquemas
novamente, lembre-se, quando você clica em
Jogar, nada acontece. Isso ocorre porque você
sempre precisa contar a ele os planos de quando
realizará este evento. Porque seu código
realmente não sabe ou seu jogo realmente
não sabe
quando realizar esse evento. Então, quando começamos a
jogar, quero chamar esse evento
de inicialização de widgets. Ok, então vamos compilar. Eles podem jogar agora. Agora podemos ver que aparece na tela ou isso
aqui e neste ano. E se eu sair do jogo, você pode ver que não tenho caixa. Agora isso não
me dá nenhum erro. E isso é porque,
porque está sendo executado corretamente agora. Agora, toda a interface do usuário é
executada pelo cliente como deveria. E lembre-se de compilar, clique em Salvar tudo. E vou passar
para a próxima lição onde explico mais detalhadamente o servidor e o cliente.
11. 3.02 O que é a replicação de eventos: Tudo bem, então antes de continuarmos, eu só quero
explicar rapidamente para você o servidor e o
cliente no Unreal Engine. Então, novamente, como você viu antes, quando clicamos em Jogar, temos o servidor e depois
temos algo chamado cliente. Mas o que você precisa
entender no Unreal Engine o servidor é a
autoridade do jogo, então o servidor é o verdadeiro jogo. E o que isso significa? Isso significa que, para o servidor, você vê tudo corretamente. Então, por exemplo, se eu
deveria ter acessado meu servidor aqui
e se eu atirar com uma arma
, a arma disparou
perfeitamente bem. Se eu atirar no cliente e o servidor não der autoridade ao cliente
para disparar essa arma, isso nunca acontecerá. Então, o que quer que você
faça no cliente, ele sempre verifica
com o servidor. Então, o servidor verifica. O cliente está fazendo
algo legal ou algo
parecido é considerado trapaça. Então, todos os clientes se
conectaram a você, então digamos que você criou um servidor Counter-Strike
ou um servidor de quinze dias
ou qualquer outra coisa. E todos os seus
amigos estão conectados a
você ou aos seus amigos ou
aos clientes, a você ou ao servidor. Então, se um de seus amigos
está trapaceando, por exemplo, ele está atirando com uma
arma sem balas. Ele sempre verificará
isso com o servidor. E se o servidor perceber que
esse jogador não tem balas
, isso nunca será fechado. Portanto, o servidor sempre
verifica quais são os clientes, e esse é um bom. Se você puder pesquisar no Google UE
o compêndio de rede, ele lhe dirá tudo
sobre o modo multijogador. Mas eu só quero tornar
isso muito fácil para você ,
porque é um documento longo. E eu só quero
mostrar esses círculos, assim como fizemos
na lição anterior. Executamos os widgets
no cliente. Então você pode ver aqui
que os widgets são sempre executados no cliente. Os controladores do player
são executados no servidor e nos clientes para que eles possam se comunicar com o
servidor e o cliente. E o modo de jogo só
funciona no servidor. Portanto, se você tiver algum código
escrito dentro
do modo de jogo e quiser acessá-lo por meio do cliente. Isso é impossível porque o modo de jogo só
existe no servidor. E o controlador do player, novamente, existe tanto no
servidor quanto no cliente para que você possa se comunicar com ambos. Então, o que fizemos em
nosso jogo até agora foi trabalhar
dentro do cliente. Então, se eu voltar para o meu
jogo aqui dentro, se eu voltar para os planos, lembre-se de que fizemos esse código aqui dentro do controle do
jogador. E o controlador do player existe tanto
no servidor
quanto no cliente. Então, temos que
especificar aqui, estamos trabalhando com o servidor ou estamos
trabalhando com o cliente? Se estivermos trabalhando
com o servidor, precisamos replicar
para rodar no servidor. Mas como você sempre é
tratado por meio do cliente, precisamos executar o cliente e, em seguida, criar a
interface do usuário, trabalhar com a interface do usuário. Então, é muito, muito importante
entender. A interface de usuário é sempre gerenciada
pelo cliente. E se você não os
passar
pelos clientes, como vimos antes, se você simplesmente executá-los
diretamente dessa forma, você receberá dólares. Agora, além da interface do usuário, por exemplo ,
algumas das mecânicas de jogo ,
digamos que mais tarde , vamos criar itens. Então, aqui nos itens, vamos criar itens. E digamos que o
jogador vai extrair essa manipulação
do chão e adicioná-la ao inventário. Então o jogador vai
até o jogador caminha
até essa poção. E quando o jogador
pressiona E, por exemplo, para saquear a poção
, ela será
executada nos servidores. Vamos fazer
eventos personalizados serem executados no servidor. Em seguida, o servidor lidará com
a lógica, então o servidor a verificará. Na verdade, esse jogador pressiona E. Esse jogador está realmente próximo dessa poção para
poder diluí-la. Se você não verificar essas coisas, cliente
deles pode trapacear. E é por isso que verificamos
isso com o servidor. Então, digamos que o
cliente esteja aqui e você só possa carregar para essa pessoa quando
estiver aqui. Mas se você não verificar
isso com o servidor e o cliente versus E
aqui, eles estão trapaceando. Eles podem facilmente
perder essa poção. Então, temos que rodar no servidor, verificar se a camada está realmente interagindo
com essa poção. Se o jogador tiver ***** o suficiente no inventário para
carregar esta poção e assim por diante. Então, vamos
examinar o servidor mais tarde, então verifique essas coisas. Mas para a interface do usuário, estamos
executando isso no cliente.
12. 3.03 Chave obrigatória para o inventário aberto: Vamos agora vincular a chave I
para abrir o inventário. Você também pode vincular a tecla B, que às vezes é
usada para mochila. Então, vamos para as plantas novamente, pasta
Blueprints. E dentro do player, eu já criei
esse chamado contexto
de mapeamento de entrada
e ação de entrada. Este é o novo
sistema de movimento e o Unreal Engine. Se você não sabe
nada sobre isso, você sempre pode ir ao meu youtube e conferir o tutorial que
eu fiz para ele. Agora você pode
clicar duas vezes nesse aqui, o contexto do mapeamento. E se você
abrir, verá que eu
já criei o movimento. E quando você olha
com o mouse
, precisamos criar um novo, ou você quer
abrir seu inventário? Vamos clicar com o botão direito aqui. E vamos para as entradas
e para a ação de entrada. Vamos chamar isso de
IA para ação de entrada e chamá-lo de inventário
aberto. Agora, o que podemos fazer é
salvar tudo. E dentro do contexto do
mapeamento, agora
podemos clicar
no botão Mais aqui, clicar aqui e selecionar o inventário aberto
que acabamos de criar. Em seguida, você pode selecionar
uma chave para isso. Você pode selecionar o
olho ou selecionar B.
Você pode simplesmente clicar neste ícone aqui e escrever V no
seu teclado, por exemplo, você também pode encontrá-lo
aqui, se desejar, olhando no teclado
e encontrando a tecla. Então, eu também posso adicionar dois botões. Eu posso simplesmente clicar neste botão de
adição e na tecla. Agora você pode abrir o inventário usando o bico e a chave do olho. Ok? Então, agora há um
pequeno erro até agora. No momento, funciona com carrapato. E eu vou te mostrar daqui a pouco. Se você acessar o nome real
do controlador do player, vamos voltar
ao player aqui. É aqui que lidamos com as entradas. Então, aqui dentro, se você clicar com o botão direito do mouse e
agora pesquisar o inventário aberto de IA
que acabamos de criar. Você encontra esse evento aqui
e acaba de perceber isso, esse ícone significa que este
é um evento clicando nele. E agora temos esse
que acabamos de criar. Agora, basta arrastar
do acionador e escrever uma string de impressão apenas
para ver o que está acontecendo. E isso apenas escreverá
textos na tela. Agora, basta clicar
em Jogar, Jogar. E aqui eu vou
clicar no botão I. E você pode ver que ele imprime olá muitas vezes e não
é isso que queremos. Só queremos abrir o
inventário uma vez ao clicarmos, é só enviar spam para
o inventário neste momento. Se você clicar em AI. Então, vamos voltar aqui. Volte para o contexto do mapeamento. E aqui no inventário
aberto do peaky e do ikea,
lembre-se de pressionar esta pequena
seta para abri-los aqui. O que queremos fazer aqui
é, para acionar os gatilhos, clicar no botão de adição e selecionar pressionado. E o que diz? Trigger dispara apenas uma vez, e é isso que queremos fazer. Então clique aqui. E a mesma coisa para os olhos. Só queremos
acioná-lo uma vez quando clicamos no
botão, vamos salvá-lo. Vamos voltar. Clique em Jogar. E agora vou
apertar a tecla I. E você vê isso apenas
uma vez quando eu pressiono. E mesmo que eu segure como agora, estou apenas pressionando várias vezes. Mas mesmo
que eu segure um, agora vou
segurar o botão. Você pode ver que ele dispara apenas uma vez e isso
também é o que queremos. Tudo bem, agora é
hora de exibir o inventário na tela
quando clicamos no botão. Mas vamos passar
para a próxima lição. Você precisa aprender mais sobre algo chamado enumeração. Então, salve tudo
e vamos seguir em frente.
13. 3.04 Introdução à enumeração: O que é uma enumeração,
é apenas uma lista de todos
os itens que você deseja que seja. Então, vamos
ver as plantas. Aqui. Vamos clicar com o botão direito do mouse,
criar uma nova pasta e chamá-la de enums. Então, essas são as enumerações que estarão dentro daqui. Agora clique com o botão direito aqui, vá
para plantas e
você verá que temos algo
chamado enumeração. Então, vamos criar um
e ver o que é. Eu geralmente dou a eles o
prefixo E ou enumeração. E para este, basta chamá-lo de widgets de jogos. Vamos fazer uma lista
de widgets de jogos. Vamos entrar aqui. E agora você pode ver
que é muito simples. Não temos muita coisa aqui
dentro. Você pode clicar em Adicionar enumerador. E dentro daqui, você obtém esse
nome de exibição e pode dar a ele um nome e
uma descrição. Então, o que é uma enumeração,
é apenas uma lista. Isso é simplesmente o que é. É apenas uma lista e pode ser
uma lista de qualquer coisa, por exemplo, esta é chamada de jatos Gameboy. Então, eu só quero fazer
uma lista de jogos. Até agora, queremos
abrir o inventário. Um widget que temos até
agora é o inventário. Também temos a interface principal, mas eu realmente não preciso
dela aqui. Agora que temos o inventário até agora , na verdade não temos mais. Mas poderíamos, por exemplo, ter algo como um menu de habilidades. Digamos que temos um jogo maior. Temos um menu de artesanato. Poderíamos ter um menu de pausa, por exemplo, poderíamos ter muitos widgets aqui, dependendo
do que você deseja adicionar. Vou excluir tudo isso clicando neste ícone. Mas você também pode fazer uma lista de qualquer outra coisa, por exemplo, itens
de criação. Talvez você precise de uma barra de ouro. É assim. Talvez você precise de pele de vaca
ou algo assim. Portanto, pode ser uma lista de qualquer coisa. Mas agora vamos
apenas criar, só queríamos
listar os widgets de jogos
que temos agora, são
apenas o inventário. Então, isso foi muito
fácil e a enumeração é apenas uma lista de qualquer coisa. E vamos
usar essa lista na próxima lição para
exibir o inventário.
14. 3.05 Criando o evento aberto e fechado do widget: Ok, agora nos planos dentro da pasta enums, agora
criamos nossa enumeração de
widgets do jogo. E a única coisa que
temos agora é apenas o inventário que
podemos fechar e abrir como interface de usuário. Então, vamos tentar criar eventos de abertura e fechamento
do widget para que ele possa realmente abrir
e fechar widgets. E geralmente, novamente, trabalhamos com a interface do usuário dentro do controlador
do player. Então, vamos voltar
às plantas. Vamos abrir nosso controlador de
player. E aqui, até agora,
criamos essa interface de usuário principal, que adicionamos à janela de visualização. Agora, o que eu quero que você faça é clicar com o botão direito aqui e
criar eventos personalizados. Para esse evento, vamos
chamá-lo de widgets de abertura e fechamento. Então, estamos usando esse evento para
abrir e fechar widgets, por exemplo, você abre e fecha
o inventário, ou você abre e fecha
o menu de pausa, ou você abre
e fecha qualquer coisa, por exemplo, um Sharp que você abre para comprar
armas e assim por diante. Então, por enquanto, abrimos e
fechamos o inventário. Então, este evento aqui,
novamente, lembre-se, falamos sobre
a necessidade de a interface do usuário ser executada no cliente. Então, temos que fazer um novo evento, um novo evento personalizado, e chamá-lo de
C L para clientes. E vamos chamar isso
de widgets de baixa abertura. E geralmente, para o cliente, eu costumo chamá-los de
Cl como prefixo. E, na verdade, eu deveria
ter feito isso aqui
também , apenas para me manter consistente. E eu vou
chamá-lo de CL aqui também. Ok, então, para este, vamos lembrar nas
réplicas, executá-lo com clientes próprios
e também de forma confiável. E a partir desse primeiro evento de
fantasias, vamos nos lembrar de
executar outro código. Isso nunca vai funcionar. Portanto, essa iniciativa Cl não foi inicializada com apenas
um widget de abertura e fechamento. Então, agora também executamos esse código. Ok, você pode compilar. Basicamente, o que eu quero com
esse widget é que precisamos selecionar qual widget
queremos abrir. E então temos que selecionar se
queremos abri-lo ou fechá-lo. Então, para selecionar qual
widget queremos abrir, lembre-se de que fizemos essa enumeração
chamada widgets do jogo E. Então, aqui para esse widget de abrir
e fechar, vamos agora clicar
no sinal de adição aqui. Então, estamos adicionando uma
variável a esse evento. E vamos selecionar aqui
o tipo de variável. Vamos pesquisar widgets de jogos eletrônicos. Essa que acabamos de fazer, essa é a enumeração. Então, vamos clicar
nele. E eu vou chamá-lo de widgets. E você pode ver aqui agora, agora precisamos conectar essa enumeração
com a do cliente. Então, aqui, eu vou
realmente
criar o mesmo
clique no Plus. Já está configurado para
os widgets do jogo. Vou
chamá-lo de Widget novamente. E agora podemos
conectá-lo aqui assim. Ok? Então, precisamos de
outra variável. Precisamos especificar se realmente
queremos
abrir ou fechar esse widget. Então, precisamos adicionar um booleano. Vamos clicar no sinal positivo aqui em cima. Selecione um booleano
como o tipo de variável e chame este de aberto. Novamente. Vamos fazer isso aqui embaixo. Clique no link adicional Collatz open e vamos conectá-los
aqui. Ok, então, por exemplo apenas para mostrar isso
para você rapidamente. Então, aqui no
início do jogo, digamos que eu arraste daqui
e diga widget open lows, este sem o
cliente, então esse aqui. Então, agora eu posso especificar qual
widget eu quero abrir? Isso ocorre porque
adicionamos essa variável aqui
embaixo, especificando, por exemplo eu quero abrir o
inventário e lembrar marcar esse booleano porque
você deseja abri-lo. Se você não quiser
abri-lo assim,
isso significa
fechá-lo, fechá-lo. Clicando aqui. Isso significa que você quer abri-lo. Ele vai
passar por esse evento e os
resultados estarão aqui. Ok, então eu vou
deletar este por enquanto. Então, aqui embaixo, o que
precisamos fazer aqui agora,
precisamos verificar. Você quer abrir ou fechar o widget? Então, arrastar desse booleano, escrever B e selecionar essa ramificação para esse booleano
é apenas para se manter consistente. Eu costumo escrever B como um prefixo, e isso é feito em C plus
plus para encontrar booleanos mais rapidamente. Então você pode ver que,
embora eu escreva um b, ele não aparece aqui, então é um pequeno Segredos, escrevendo-o antes dos nomes
booleanos, booleanos. Eu costumo fazer isso. Ok,
vamos voltar aqui. Então, fazendo um galho aqui, à direita V, e faça um galho. Agora estamos perguntando: esse
booleano é verdadeiro ou falso? Se for verdade, queremos
abrir o widget. Se for falso, queremos
fechar o widget. Mas vamos fazer duas
funções aqui, clicando nesse
botão de adição, vamos chamar essa. Widgets, e vamos criar o segundo
e chamá-lo de widgets de fluxos. Vamos voltar ao gráfico
de eventos. Vamos arrastá-los até aqui. E agora vamos conectá-los. Então, se for verdade, queremos abrir o widget. Se for falso. Se a
abertura for definida como falsa, queremos fechar o widget. Agora precisa especificar de quais
widgets você está falando. Então, novamente, na entrada, vou clicar no sinal de adição e selecionar
o widget do jogo EA e
chamá-lo aqui de widgets. E fazendo a mesma coisa com
o widget de fechamento, clique no sinal de adição. E então você precisa conectar
esse widget a aqui. E agora temos o fluxo total. Então, o que está essencialmente
acontecendo agora é se você chamar esse widget de
abertura e fechamento, novamente aqui em cima, por exemplo, você diz widget de abertura e fechamento. Você quer abrir o
inventário assim. Agora, vai descer até aqui. Quando você chama o
código assim, ele vai parar aqui. Ele sabe que você configurou
esse widget para inventário. Então, vai abrir
porque isso é verdade. Então, vai ficar aqui embaixo. É verdade. E sabe que o
valor é estoque. Então, ele abrirá
o inventário de widgets, então ainda não os criamos. Então, vamos até aqui. Esta é a função de
widget aberto aqui. Então, aqui, você pode arrastar
a partir dessa enumeração. E temos algo chamado
switch on enumeration. Então, ligue-o se você
clicar nele agora. Agora, o que é o interruptor ligado? Ele pode reproduzir valores diferentes
dependendo do que você
selecionou como valor
para essa enumeração. No momento, temos apenas
o inventário como um valor, mas se você tivesse vários valores, teria
vários pinos aqui. Assim, você pode executar uma
ação dependendo do que você selecionou
como enumeração. Então, aqui para o
inventário, lembre-se que estamos dentro do widget aberto. Então, vamos prosseguir aqui e dizer Criar widgets e
selecionar este aqui. E queremos criar
o widget de inventário. Queremos abrir o inventário. Ótimo inventário de widgets. E então vou clicar com
o botão direito do mouse remotamente em uma variável
porque gosto de
tê-las em variáveis e chamar
isso de inventário WB. Ok, agora eu tenho essa
variável e quero adicionar às suas portas
assim. Mas agora, na verdade, estamos
adicionando-o à janela de exibição. Apenas uma verificação rápida antes de
realmente fazermos isso, você pode,
novamente, lembrar que
podemos segurar a tecla Alt e clicar nela aqui também,
desconectados rapidamente. Antes de fazermos isso, deixe-me
pegar essa variável de inventário. Você pode segurar Control e arrastar. Se você segurar Control e arrastar, você pegará esse valor variável. Se você segurar Alt e arrastar, você define essa variável segurando controle e arrastando
essa variável, você a tira daqui. E agora podemos
clicar com o botão direito do mouse nessa variável e convertê-la
em um get validado. E o que isso faz
é que você está realmente verificando antes de fazer isso. Você está verificando se
isso já foi criado ou não porque realmente não
precisamos criar isso e, em seguida, definir a variável se ela
já estiver definida anteriormente. Então é isso que estamos
realmente fazendo. Então, se não for válido, se essa variável não
contiver nada, significa
que ainda não a
criamos. Se não for válido, queremos
criar essa variável. No entanto, se essa
variável for válida, que significa que já
executamos
esse código antes, queremos
apenas adicioná-lo à janela de exibição
desse jeito. Portanto, não precisamos
criá-lo
repetidamente se já o
criamos antes,
certo, então foi isso
para o widget aberto. O widget de fechamento
é muito mais simples. Então, aqui novamente,
arraste daqui e diga para ativar a enumeração. Portanto, dependendo do que
queremos fechar, por exemplo, queremos
fechar o inventário. Então, vamos pegar o
inventário aqui novamente, clicar com o botão direito do mouse e converter
para validar o resultado. E se tivermos isso aberto, o que significa que,
se for válido, significa
que o
inventário está aberto. Queremos sair daqui
e dizer Remover dos pais. E é assim que eu removo a
interface do usuário das janelas de visualização. Tudo bem, agora
terminamos e apenas uma explicação
rápida antes de
eu realmente terminar isso, só para não ficarmos muito
confusos sobre isso. Então, deixe-me
remover isso por enquanto. Então, agora fizemos isso, esse evento personalizado aqui e
está sendo executado no cliente. Por exemplo, eu quero abrir
o jogo inicial aqui. Eu quero abrir o inventário,
digamos, abrir todos os widgets. Então, estamos chamando esse evento
aqui que fizemos. Estamos selecionando como
widget o inventário, porque lembre-se
de que, dentro de nossa enumeração, não
temos mais valores. Digamos que eu adicionei
outro valor mais tarde, chamei de loja de armas, por exemplo, I. Clique em
Salvar, salve tudo. Agora posso ver aqui dentro
do meu controle de jogador, agora
posso selecionar
a arma afiada. E digamos que passe por aqui
e pelo widget aberto. Agora você pode ver que eu posso fazer outra
coisa com eles
em uma loja de armas. Eu poderia ter criado
outro widget para a arma sharp e
exibir na janela de visualização, ver como é útil
ter enumerações. Deixe-me deletar este
por enquanto e deixe-me voltar. Então, no gráfico de eventos, digamos que eu ligo,
na verdade, basta mudar
isso de volta para inventário. Então, aqui eu chamo de inventário
aberto-fechado. Eu selecionei
o inventário como entrada para o widget. E eu o seleciono aberto assim. E isso significa que vai
passar por aqui. Ele sabe que esse booleano é verdadeiro, o que significa que ele vai até
aqui e abre meu widget, e sabe o que é
porque eu o configurei aqui. Agora, ele vai até aqui e adicionará a
interface do inventário à minha janela de visualização. Então, está adicionando essa interface de usuário aqui, inventário
WB à janela de visualização. E esse é o inventário. Não parece bom porque ainda não o terminamos, porque também precisamos
programá-lo. Mas isso é o que
essencialmente acontece. Se isso estiver definido como falso. Vai ser
falso aqui embaixo. E isso removerá o
inventário da tela. Tudo bem, então agora vamos
deletar isso aqui. Não queremos
abrir o inventário quando começarmos a jogar. No entanto, o que queremos fazer
é agora fechar
tudo aqui. Vamos voltar ao player de blueprints
e
ao nosso reprodutor de bp aqui. Então, o que queremos fazer é quando
clicamos em Abrir inventário, na verdade
queremos
executar esse código aqui em nosso controlador chamado widgets de
abertura e fechamento. E queremos abrir
o inventário, pressione o botão de abrir inventário. No entanto, lembre-se de que
nosso código está dentro do controlador do player e agora estamos dentro do player. Então, como podemos fazer com que esse evento, que está dentro do controle
do jogador, possa ser jogado aqui
e o jogador. Agora, se você fez
meus cursos anteriores, você pode tentar fazer isso sozinho. Você provavelmente deveria ser capaz. No entanto, se você é novo
aqui ou eu não me lembro, vamos falar sobre a próxima
lição, porque agora precisamos falar sobre
a
comunicação do Blueprint, na falar sobre
a
comunicação do Blueprint, qual nos comunicamos entre
dois planos diferentes.
15. 3.06 Introdução à comunicação de black: Olá e bem vindo de volta. Então, agora vamos falar
sobre a comunicação do Blueprint. E o que é a
comunicação do Blueprint. Estamos simplesmente nos comunicando entre diferentes classes de
blueprint. Então, neste caso, queremos abrir o inventário. O que é um evento de
widget de abertura e fechamento está dentro
do controlador do player. Então, como obtemos as
informações de outra classe de Blueprint
aqui do jogador? Então, o que essencialmente
precisamos fazer primeiro obter a referência
para esse controlador de player. Vou deletar essa string de
impressão Olá, que apenas
a imprime na tela. Agora, o que precisamos
fazer é clicar com o botão direito aqui e escrever get controller. E o que isso faz é retornar o controlador
para esse ator. Então está ficando, você obtém este controlador
para exibição aqui. Agora precisamos especificar de qual controlador você está
falando. Este é apenas um controlador
geral. Lembre-se de que fizemos
nosso personalizado aqui. Agora precisamos dizer
ao mecanismo que,
na verdade, estamos falando especificamente sobre um
controlador de disco. Então é aqui que a
comunicação entra. É algo
chamado custo de dirigir daqui e dizer “jogado para lá”. E agora precisamos
escrever o nome
da planta aqui
do controlador. Então, digamos, PC town. Então esse aqui custou para o PC4 na parte alta da cidade e o acionador, vamos conectá-lo aqui. Agora, como esse controlador
está aqui, eu posso realmente acessar
tudo dentro desse controlador de player, incluindo essas
variáveis também. Então, além dessas
funções aqui. Então é isso que comunicação do
Blueprint
é muito, muito simples. Você pega o controlador. Essa é apenas a referência
geral. E então especificamos qual controlador você está falando
especificamente? Estou falando desse
PC mais ou menos como este. Agora podemos dizer que eu quero executar este evento chamado
Open close widget. O player que eu posso arrastar
daqui e dizer open close widget,
este aqui. Agora eu posso realmente fazer isso. Então, por exemplo, para o inventário, quero abri-lo. E se eu compilar
e clicar em Reproduzir, agora
posso clicar em I
no teclado e você poderá ver nossos
inventários realmente abertos. Agora podemos clicar em I novamente
porque ele não vai fechar. Ainda temos que
programar essa lógica. Então, vamos fechá-lo. Então, essa é basicamente a comunicação do Blueprint,
muito, muito fácil. No entanto, há um pequeno
problema com a fundição. O casting faz
referências concretas e como as referências rígidas precisam ser carregadas sempre que o jogo carrega. Então, isso tornará
seu jogo mais lento. Às vezes, você vê que os
jogos ficam muito, muito lentos quando
carregam o jogo. E pode ser porque eles passaram isso para
muitas coisas em seu jogo. Imagine que seu jogo pode ser muito, muito grande quando você
termina o jogo. E talvez você tenha cerca de 100, 100 itens que você está custando dois ou 100 plantas
que você está custando dois. E tudo isso está
criando referências concretas, o que torna seu jogo mais lento. Não estou dizendo que você nunca
deve usar isso, mas deve evitar
usá-lo sempre que puder. E, nesse caso, podemos
realmente evitá-lo
usando algo chamado
Blueprint Interfaces. Então, vamos prosseguir com
a próxima lição e falar sobre Blueprint Interfaces.
16. 3.07 interfaces de black: Agora que falamos
sobre custos, vamos agora falar sobre as interfaces
Blueprint. Portanto, esse tópico geralmente é um
pouco difícil para iniciantes, mas tentarei
explicá-lo da melhor maneira possível. Mas agora vamos fechar tudo aqui e aqui e a pasta
Blueprints Vamos clicar com o botão direito do mouse e ir até blueprints e criar essa chamada de Blueprint Interface. E geralmente eu dou
para int como prefixo. E para este,
vamos chamá-lo do nome do projeto ao
qual quero me referir. Portanto, quero fazer referência
a esse controlador preto para obter meu evento de widget de abertura e
fechamento. Então, vamos chamar isso de controlador de
uma camada. Agora também vou clicar com
o botão direito do mouse e criar uma nova pasta chamada Interfaces apenas para
permanecer consistente aqui e arrastá-la
para esta pasta. E deixe-me ir até a pasta, abrir minha interface Blueprint. Então, que
interface de Blueprint você pode ver aqui. Muito, muito simples. Eu realmente não posso fazer
nada neste gráfico. Não consigo mover nada
nem fazer nada. E nós realmente não
deveríamos trabalhar aqui. O que devemos
fazer aqui à direita, podemos criar funções. Então, nesta primeira função,
você pode clicar nela. Você pode clicar em F2 no
teclado para renomeá-lo. E vou
chamá-la de referência do
controlador de layout do get porque
é isso que estou tentando fazer. Aqui na saída. Vamos clicar sobre isso e
definir uma variável aqui. Agora, você precisa selecionar o que
deseja referenciar. Quero me referir ao meu controlador de player
chamado EC Hook Town. Então, selecione-o aqui. E agora vamos
chamá-lo apenas de controlador de jogador. Ok, então é isso
mesmo por enquanto. Então, agora criamos
essa função obter controle de camada ou referência, ou tentamos obter a referência para esse termo popular controlador de
player para PC. Ok, agora vamos
fechar essa interface e voltar aos planos. E precisamos entrar nesse controlador
de player e adicionar nossa interface
que acabamos de criar. E fazemos isso clicando
nas últimas configurações. E aqui nas interfaces, vamos clicar aqui e
procurar o controlador de camada final, esse é o que acabamos de criar. Então, clicando nele aqui. Agora, vamos compilar. Se você fizer isso agora,
podemos ver aqui que temos uma guia chamada interfaces. E se você clicar na seta, você verá sua interface. Um erro muito pequeno que
muitas pessoas cometem aqui. Se você voltar à interface, lembre-se
de clicar em compilar. Caso contrário, você não verá isso
aqui ao adicionar
sua interface. Então lembre-se de clicar em compilar. É muito, muito importante
sempre compilar seu código. Agora, aqui
na interface,
agora podemos clicar duas vezes nela. Para isso, para isso aqui, para essa referência
dessa variável, podemos arrastar
daqui e escrever self. Basicamente, o que isso
está pedindo, essa variável é que
precisamos especificar o que é essa
variável de cidade EC ****, o que é isso? E o que estamos basicamente fazendo aqui é nos arrastar até
aqui e dizer nós mesmos. Porque lembre-se de que já estamos
nesse modelo, o controlador do player ao qual
estamos tentando nos referir. Então, basicamente, estamos dizendo que essa referência de variável é self, seja, o que quer que
estejamos dentro de nós agora, que é essa classe de
modelo aqui. Agora o que podemos fazer é voltar aos blueprints, ao player e
ao reprodutor de bp. Então, vamos voltar aqui. Em vez de fundir,
vamos deletar essa parte. Aqui temos o controlador
geral. Então, em vez de traje, agora
podemos arrastar e dizer que obtém sua
referência de controlador, porque isso é o que realmente criamos
nesta função aqui. Então arraste aqui e diga que é
player, referência do controlador e tem que dizer
mensagem no final, o que significa que vem de
uma interface Blueprint. Portanto, esta é uma função da Blueprint
Interface, clicando nela aqui. E agora podemos conectá-lo aqui e daqui, assim como antes, agora
podemos acessar tudo dentro desse controlador de camada. E agora podemos dizer um widget Open
lows como este. E agora está funcionando totalmente. Você pode ver se eu clicar em jogar e clicar em
I no meu teclado, isso abre o inventário
como antes, e estamos evitando o jejum que criou uma referência rígida, o que pode desacelerar nosso jogo. Então, isso é muito melhor de fazer. Então, vou
abordar isso rapidamente porque sei que
é um assunto confuso para alguns e também
era confuso para mim há algum tempo,
quando eu comecei. Então, vamos voltar aqui. Criamos uma interface
Blueprint. Dentro daqui. E dentro dessa interface
Blueprint, acabamos de criar uma função chamada getline Controller reference, onde adicionamos qualquer referência de controlador de
player à qual
queremos fazer referência. E queremos nos
referir a este especificamente. Agora, o que fizemos foi
acessar esse controlador e adicionar a interface
e as configurações de classe. Nós o adicionamos aqui. Isso fez com que essa
função de interface aparecesse. E o que fizemos
aqui, agora tivemos que
especificar se eu simplesmente
desconectei isso aqui, essa variável do
controlador municipal **** do PC. Se você não fizer isso, ele simplesmente não sabe do que
você está falando. Isso. Lembre-se de que, se você
colocar assim, significa que essa variável está vazia. E o que quer que você
tente fazer aqui, vai te dar um erro. Então, se eu clicar em jogar
aqui e clicar em I, no meu teclado, nada acontece. E se eu sair, haverá um erro dizendo
que x é nenhum acesso nenhum, apenas significa que
essa variável está vazia. Eu não sei o que
você está tentando acessar ou o que você está tentando fazer é essa
variável, ela está vazia. Eu não tenho nenhuma informação. É por isso que você
precisa dizer eu, porque basicamente estamos
definindo essa variável. Estamos dizendo que esse controlador de
jogador do estamos falando é próprio, o que significa esse modelo. Seja qual for o modelo em que estejamos, essa autorreferência é essa. Então, o fator PC, é
assim que estamos referenciando
o controlador do player. E agora, dentro do player, agora
podemos usar essa função de interface
Blueprint. E sabemos qual é a
variável porque fizemos essa
autorreferência aqui. E a partir daí, agora podemos
acessar tudo dentro desses controladores de camada para que
possamos até mesmo acessar esse WB
feito, se quisermos. Você pode ver aqui, se eu arrastar
daqui e disser WB main, eu também posso obter
essa variável. Tudo bem, então era isso para
a planta e as superfícies. Agora podemos abrir
o inventário. Mas vamos prosseguir com a
próxima lição e realmente finalizar isso, porque também
precisamos fechar o inventário.
17. 3.08 Exibindo o inventário: Ok, então a etapa final para abrir e fechar
o inventário. No momento, o problema é que quando
clicamos em I no teclado, ele continua abrindo o inventário, então precisamos fechá-lo também. Vou voltar para
o controle do player. E dentro daqui, vamos
criar uma nova variável, um booleano chamado is, vamos chamá-la de inventário aberto. Agora vamos
controlar a abertura, fechando por esse booleano aqui. Então, aqui no
widget aberto, vamos entrar aqui. Então, por que não
abrimos o inventário e o adicionamos à janela de exibição? Vamos pegar isso aqui. E lembre-se de que você pode segurar Alt, arrastá-lo e configurá-lo aqui
para definir a variável. Sim, então se você quiser arrastá-lo e selecionar Definir aqui também. Então, vamos definir
esse booleano como verdadeiro. Então, o inventário está
aberto, isso é verdade. E quando fecharmos o inventário, se você voltar
ao Gráfico de Eventos e clicar no widget Fechar, definiremos
isso como falso. Ok, então agora é falso. E vamos voltar
para o jogador aqui. Então, dependendo se é
verdadeiro ou falso, essa, essa variável aqui
, queremos
abrir ou fechar o inventário. Lembre-se de que já estamos fazendo essa
comunicação da interface Blueprint com o controlador do player para que
possamos acessar o que está dentro
desse controlador preto, incluindo essa
variável que acabamos de criar. Agora podemos dirigir
daqui e dizer É, os estoques estão abertos aqui? Podemos selecionar o
booleano aqui para que possamos obter o valor disso. E agora podemos fazer uma filial. Então, ramo direito. Portanto, se o inventário estiver aberto, queremos prosseguir e
fechá-lo. Vamos copiar e colar esse aqui. E se o inventário não
estiver aberto aqui, abriremos
o inventário. Vamos arrastá-los até aqui, conectar isso aos alvos. E se você quiser
torná-lo muito melhor, basta
clicar duas vezes na linha aqui e
torná-la mais organizada. Ok, então o que está essencialmente acontecendo aqui é que estamos perguntando: o inventário
está aberto? Se ele já estiver aberto
quando clicamos no
botão, queremos fechá-lo. Se clicarmos no botão e
o inventário não estiver aberto,
então, na verdade, queremos
abrir o inventário. E vamos salvar tudo. Vamos clicar em Jogar. E agora vamos clicar
em I para abrir o inventário. E eu vou
clicar em I novamente, e você pode ver que ele fecha. Então, clicar no olho o abre. Podemos novamente, isso o fecha. Lembre-se de que também achei a
tecla be se você pressionar a tecla B. E isso só está aqui
na camada de plantas. Aqui, se você clicar
nos contextos de mapeamento, se você também disse o
BQ para o inventário, dependendo das
teclas que você definiu, você pode pressionar essas teclas aqui e o jogador para
abrir o inventário. Então, agora está funcionando
como deveria.
18. 4.01 Criando o modelo de item base: Agora estamos prontos para
entrar nos itens. E a razão pela qual criamos
os itens inicializáveis
antes de realmente
codificarmos o inventário
é porque, na verdade,
precisamos de itens que
precisam entrar nos espaços do
inventário. Então, vamos
criar os itens antes de
continuarmos com o inventário
na pasta blueprint. Agora
vamos clicar com o botão direito do mouse aqui
e criar uma nova pasta. Vamos chamar isso de um item. E dentro daqui,
vamos clicar com o botão direito do mouse. Vá para a aula Blueprint. E você pode criar um
ator aqui porque os itens são apenas
atores estáticos dentro do nível. Por exemplo, esta planta poderia
ter sido um item. Essa ferramenta poderia
ter sido um item. Então, esses são apenas atores. Se você ler aqui,
diz que um ator é um objeto que pode ser colocado
ou responder no mundo. Então, vamos selecionar o ator e
chamá-lo de base de itens da BP. Então, geralmente eu crio
uma classe base se eu quiser criar várias
da mesma coisa. Então, se eu quiser criar
vários itens, estou criando uma classe base. E então, a partir dessa classe base, posso criar os itens. Isso é chamado de plantas infantis, mas falaremos sobre
isso na próxima lição. Por enquanto, quero que você entre na base de itens. E dentro daqui, vamos
adicionar um componente. E vamos
procurar uma malha estática. E uma malha estática
serve apenas para que
possamos adicionar nossos itens
que temos em nossa pasta. E vamos chamar isso de
um item. Ok? E você pode ver aqui
para a malha estática, podemos adicionar uma malha, por exemplo, podemos adicionar a banana
como um item e assim por diante. Mas agora você está
na classe base e nós realmente
não queremos
atribuir nada aqui. Vamos fazer isso mais tarde. Eu só queria criar este item, componentes
de malha estática. Então, vamos adicionar outro, clicando neste item. E então vamos adicionar, e vamos adicionar uma colisão. Vamos adicionar uma esfera de colisão, esfera de colisão
selecionada. Vou chamá-la de esfera
de colisão. E a razão pela qual estou
adicionando este é porque precisamos
interagir com o item. Então imagine se formos
para itens de ativos, imagine se esse item
está no mundo, então precisamos de uma esfera de colisão. Porque precisamos saber
quando o jogador está realmente colidindo
com esse item para que possamos perdê-lo ou não. Vamos deletar esse por enquanto. E para o item, vamos voltar aqui. Vamos voltar
à colisão aqui. Então, para a colisão,
para este item, eu não quero que ele
tenha colisão, então vamos remover a geração de eventos de
sobreposição. Vamos remover esse. E digamos que aqui na predefinição
de colisão, sem colisão. Vamos compilar. Vamos agora voltar para
a esfera de colisão. Agora, para a
esfera de colisão no topo, vou apenas aumentar
o raio para 100s. Então você pode olhar e
ver aqui se você
voltar para os itens e colocar
o item baseado no nível, você pode ver que esse é
o raio no qual o jogador pode interagir
com o item. Então, se você aumentá-lo, esse
jogador poderá interagir com o item quando o jogador
estiver dentro dessa esfera. Assim, você pode simplesmente ajustar o raio conforme
desejar para o seu jogo. Eu só queria colocá-lo
em 100 agora. Vou deletar
este do nível e novamente descer para a colisão. E aqui dentro, queremos gerar
eventos de sobreposição, então isso está correto. Este também está correto. E aqui na predefinição de
colisão, eu só quero que meu jogador
interaja com essa esfera. Eu não quero que
nada mais faça isso. Então, vamos dizer,
digamos, o cliente aqui em cima
e a predefinição de colisão. Vou ignorar tudo,
exceto meu lago, que é minha camada. Vamos compilar. E antes que esqueçamos, vamos até aqui
na base de itens da BP
nos padrões da classe. E aqui em cima, se você rolar para cima, você precisa clicar neste,
porque lembre-se de que estamos no modo multijogador e
replicamos significa que, novamente, como antes, você replica as
informações para o cliente. Porque aqui, quando você joga como servidor e aqui
temos o cliente. Portanto, se você não
replicar o projeto
, o cliente
não poderá vê-lo. Só o servidor, que
é esse cara aqui. O servidor poderá ver
o item, mas os clientes, todos os clientes que o conectarem
a esse servidor, não
poderão
ver o item. Isso é o que significam réplicas. É replicar informações
do servidor e enviá-las aos clientes que eles
possam ver essas informações. Agora, queremos que os clientes
vejam esse item. Então, vamos
clicar nas réplicas e também
replicar o movimento do item caso
o item se mova. E isso foi tudo
para a base de itens. Então, vamos encerrar isso e passar para
a próxima lição.
19. 4.02 Introdução aos modelos infantis: Agora que
criamos nossa base de itens, vamos agora falar sobre plantas
infantis. Então, vamos para a
pasta Blueprints novamente e ir para os itens. Agora, para esta base de itens aqui, a razão pela qual eu criei uma classe Blueprint de itens básicos é porque queremos criar plantas para crianças
a partir desta. E eu vou explicar
o que é isso tão bem, neste você pode
clicar com o botão direito aqui em cima, você pode ver algo chamado classe
Create Child Blueprint. Então, clicando neste, vou
chamá-lo de algo aleatório. Agora temos uma classe
Child Blueprint e você pode passar o
mouse sobre ela e ela diz que a
classe principal é a base do item BP. Então, o que isso significa? Isso significa que, se eu fizer alguma
edição na base do item, ela herdará essas edições e as aplicará a
todas as crianças. Então, deixe-me clicar com o botão direito do mouse
novamente e criar outra classe infantil do Blueprint. Apenas certifique-se de que é
baseado no item em que você está fazendo isso. Então, fazendo isso aqui, vou chamar
de algo aleatório novamente, clique com o botão direito do mouse na taxa
básica do item para outra criança e chamando-a de
algo novamente, ok? Agora temos três filhos. Temos esse,
esse e esse. E eles são filhos
da base de itens. Agora, se eu entrar em uma das classes
do Child Blueprint, você pode ver que ela já
herda o item Static Mesh Component que criamos na base do item e também herda a esfera de
colisão. Lembre-se de que esses são
componentes que
criamos dentro da base do item. Agora, com base em itens, se eu criar alguma coisa, por exemplo, eu quero criar uma
variável e dizer, essa bolha de Troy ou
qualquer outra coisa, algo aleatório? Este é Troy Abel e
eu clico em compilar. Agora, se eu clicar em qualquer uma
das plantas infantis, agora
você pode ver
nos últimos padrões. Agora eu posso ver que essa variável
é capaz de ser destruída, mesmo que eu não tenha nenhuma
variável dentro daqui. Isso ocorre porque ele está
herdando todas
as coisas que você cria
dentro da base do item. Então, agora eu posso realmente dizer
se está destruído ou maluco. E isso é muito
útil porque agora todas as classes
do Child Blueprint têm a mesma
funcionalidade. Eu posso configurá-los para
destruir bolhas ou nozes. Por isso, fazemos isso para acelerar
a velocidade do
desenvolvimento do seu jogo. Então, em vez de entrar em
cada um e transformar um
booleano duplo destruído aqui, making é destruído como booleano. Então, em vez de fazer
isso 100 vezes, podemos fazer
isso apenas uma vez dentro da planta principal aqui. E então todas as crianças
herdarão essas configurações. O mesmo vale
para personagens. Digamos que você esteja
criando muitas skins, muitas skins de jogadores. Obviamente, você
deseja criar uma classe principal, como uma pai/mãe, uma
classe de modelo para a skin
e, em seguida, criar aulas de
modelo para crianças a partir dessa classe básica
de pais de skins. A razão pela qual você faz isso novamente, se quiser alterar
uma configuração específica para todas as 100
capas que
você criou, basta fazer isso uma vez
na classe principal do Blueprint, a base aqui, e ela a herdará, todos esses filhos também a
herdarão. Ok. Então foi isso. Muito, muito básico. Então, deixe-me ir em frente e
excluí-los aqui. E com esse conhecimento, agora
estamos prontos para
criar todos os itens.
20. 4.03 Criando os itens: Ok, vamos em frente e
criar todos os itens. Deixe-me clicar com o
botão direito na base do item. Criou a classe Child Blueprint. E para a primeira,
vou chamá-la de banana BP. E nos itens que
vamos fazer novamente, você pode clicar
nos ativos aqui em cima, itens e
visualizá-los aqui. Esses são todos os
itens que queremos
fazer para que possamos saquear
e ter em nosso inventário. Deixe-me voltar aos itens. Clique com o botão direito do mouse
na base do item novamente e vamos criar o sabor BP. com o botão direito do mouse novamente com
outra criança, faca EP , outra, e vamos chamar
essa maneira de BP de oceano. Outra nuvem de projeto. Apenas certifique-se de que a
classe principal seja a base do item. Certifique-se de não clicar em
nada errado aqui. Portanto, a taxa básica do item, plano, a pressão arterial se encontram, e a última são
as poções de resistência. Então, aqui intitulado VP stamina ocean. Tudo bem, agora que
temos todos os itens, vamos abrir todos eles aqui. Então, a alavanca da banana, manipulação da
faca, a carne
e a resistência, as poções. Mas vamos primeiro até
a banana, clique no item. E aqui na malha
estática você tem que atribuir a malha estática a ela. Então, vou
pesquisar aqui a banana selecionada aqui,
e aqui está. Bem, agora ele foi adicionado
aqui como o item. Ok, vamos compilar. Vamos até o
cutelo como se fosse um item. Vá em frente e selecione o cutelo. Basta procurá-lo, compilar. Agora, pegue o item da faca
e procure a faca. Esses são o mesmo
processo repetidamente. Vamos até o item de ação da
menopausa, procurar por uma poção senhorial e compilar. Vá para o próximo. item encontra a compilação
e a última, poções de
resistência e clique
no item Static Mesh. Vá em frente e procure por resistência e selecione
esse movimento de resistência. Agora, vamos clicar em Arquivo
e Salvar tudo, por precaução. Ok, então foi isso. E antes de acabarmos com isso, eu realmente quero
fazer mais uma coisa. Vamos fechar tudo. Eu quero criar
uma variável chamada nome do
item e vamos
usá-la mais tarde. Não vamos usar isso agora. Mas, novamente, lembre-se de
que você não
precisa entrar em cada uma
dessas classes do Child Blueprint e criar uma variável
chamada name. Você pode simplesmente ir
até a base do item. E, na verdade, vamos deletar
esse por causa disso, nós também fizemos isso
para ver a herança. Então, vamos criar
outra variável agora. Vamos chamá-lo de nome do item. E para o nome do item,
o tipo de variável, vamos
transformá-lo em uma string. Clique em compilar. E como você sabe, uma
string é apenas uma linha de texto, então podemos realmente
dar a ela um nome de item. E talvez se você esqueceu, por que não escolhemos
textos em vez de uma sequência de caracteres? A razão pela qual escolhemos
uma string é, lembre-se, um texto é a mesma
coisa, exceto que você pode ver essa bandeira aparecer
ao escolher o texto. E isso ocorre porque o texto é localizável e
isso significa que você pode traduzir o que
você escreve aqui para outros idiomas aqui
no Unreal Engine. Então, na janela, eu acredito que é, ou na verdade está nas ferramentas. Aqui você pode ver que
temos algo chamado painel de localização. E aqui você pode traduzir seu jogo para
diferentes idiomas, por exemplo, alemão, japonês, chinês,
árabe, qualquer coisa. Você pode traduzir
essas variáveis de texto. No entanto, se você escolher
uma sequência de caracteres e quiser traduzir
seu jogo mais tarde, não poderá fazer isso. Você precisa selecionar textos para traduzir o texto que
você deseja escrever aqui. Então, eu não quero
traduzir nada. Na verdade,
esse nome de string será usado apenas como um ID. Então, vamos salvar tudo. Eu só queria ser uma corda. Agora, criamos esse
nome de item dentro da base do item. Então, agora cada criança aqui tem esse item
chamado variáveis. Então, eu vou abrir
todos eles. No primeiro. Você pode ver aqui, diz
o nome do item. E se eu simplesmente abrir o editor de plantas completo
para mostrá-lo a você, e os padrões da classe
para esse filho do blueprint, você poderá ver a variável do
nome do item em pares. Agora, para o nome do item
aqui, podemos escrever banana. Esta é a compilação da banana e,
para o caule e uma poção, vamos chamá-la de resistência, oceano. Assim como para a carne, vamos chamar de macarrão. E para a menopausa, na verdade, a porção de
estímulos aqui. E para os homens e a poção, vamos chamá-la de meio oceano. E para a faca, clique nos padrões da classe, certo? Knife, compile. E para o cutelo,
vamos escrever a alavanca. Ok, e lembre-se de que essa visualização aparece com este
botão aqui em cima. Isso ocorre porque a classe
The Blueprint está vazia e é por isso que está
sendo exibida assim. Ok, agora
atribuímos todos os nomes. Não vamos usá-lo agora,
mas vamos usá-lo muito, muito em breve e você verá por que
eu criei essa variável de nome. Vamos encerrar tudo agora e passar
para a próxima lição.
21. 4.04 Introdução às estruturas: Tudo bem, agora que
criamos todos os itens, estamos realmente prontos para criar as informações
dos itens. Então, o nome do
item, a miniatura, a imagem que aparece dentro do inventário quando
você alude ao item, à categoria do
item e assim por diante. Até todas as informações
de um único item, precisamos definir
todas as informações. Então, antes de
fazermos isso, podemos realmente fazer isso
dentro de estruturas. Vamos às plantas. E aqui Vamos clicar com o botão direito do mouse
e criar uma nova pasta. Vamos chamá-lo. Você pode chamar as estruturas, mas eu geralmente
chamo isso de estruturas. Isso depende de você. Dentro daqui. Vamos clicar com o botão direito do mouse. Vá para plantas e selecione esta chamada
estrutura ou esta. Eu geralmente uso S t como
prefixo para estruturas. E vamos chamá-la de informações
do item porque
queremos criar as
informações para o item. Clique duas vezes nele
e você verá que essa é a aparência da minha estrutura. Portanto, uma estrutura é apenas uma
coleção de variáveis. Então, em vez de ir
até os itens e, por exemplo, aqui na base do item. Em vez de ir aqui e
criar variáveis, por exemplo, se o item for empilhável, ou talvez você queira ter
a miniatura do item, ou talvez você queira ter
a categoria para os
olhos que você pode ver. , ele aborda muitas Aqui, ele aborda muitas
variáveis e
às vezes fica confuso, então geralmente não fazemos isso. Deixe-me excluí-los aqui. Mas você pode fazer isso: você pode criar uma estrutura dentro daqui. Você pode criar
todas as variáveis. Por exemplo, eu queria o nome do
item, quero, por exemplo o valor da moeda deste
item se eu quiser vendê-lo e você pode escolher o
tipo dessa variável, por exemplo ,
para as moedas,
posso selecionar um flutuador
e, para o nome,
posso selecionar talvez um texto porque quero
traduzi-lo mais tarde. Agora temos todas essas
variáveis dentro de uma estrutura. Então, o legal agora é que, se
eu for para o item baseado em itens, por exemplo eu posso criar uma nova variável
aqui como o tipo de variável. Eu posso digitar o nome
da estrutura. Então, SC, informações do item e eu posso
selecioná-las aqui e salvar. E agora você pode ver se
eu clico na minha variável. Agora eu tenho todas as
informações aqui para este item. Assim, posso ter as informações do
item dentro dessa estrutura. E se eu clicar em uma
das plantas do meu filho, posso ver aqui
os padrões da classe. Agora você pode ver todas
essas informações, o nome do item, o valor da moeda e
quaisquer variáveis adicionadas. Então, muito legal. As estruturas são apenas uma coleção de variáveis que você
define aqui dentro. Ok, então vamos excluir
tudo isso por enquanto, e vamos excluí-lo aqui
do item baseado em itens, porque vamos criar algo
muito mais legal do que isso. Deixe-me salvar tudo. Agora que você sabe
o que é uma estrutura, vamos criar
a estrutura de informações
do item.
22. 4.05 Estrutura de informações de item: Tudo bem, então
vamos criar a estrutura de informações
do item. Vamos clicar nas estruturas. Agora vamos abrir a estrutura de informações
do item. E dentro daqui o que
queremos é o nome do item. Vamos criar uma nova variável. Queremos uma miniatura
para a imagem que aparece dentro do inventário
quando aludimos a Dyson. E o tipo aqui
é uma textura 2D, o que significa apenas uma imagem. E selecione-o aqui, referência
do objeto. E vamos criar uma nova variável. E
queremos, por exemplo , uma descrição do
item. Você não precisa. Depende do
jogo que você está criando. Alguns jogos não
têm uma descrição, mas vamos adicioná-la aqui. Não sei se
precisamos ou não, mas talvez precisemos. Então, vamos criar uma
descrição para o item. Podemos definir a
categoria do item. Então, vamos escolher esse
como o tipo de variável. Na verdade,
estou verificando se esqueci aqui. Então, nas enumerações,
ainda não o criamos. Portanto, na enumeração, você
pode realmente criá-la, se quiser. Como exercício
na enumeração, eu quero uma enumeração com as
categorias do item. Portanto, temos a categoria armas, alimentos e poções que podem
prosseguir
, criá-la e adicioná-la à
estrutura, se desejar. Agora vamos tentar fazer
isso juntos agora, vou clicar com o botão direito do mouse aqui, acessar as plantas e
selecionar a enumeração. Esta é uma categoria de item. Eu vou abri-lo
e entrar nesta lista. Portanto, lembre-se de que uma enumeração
é apenas uma lista de itens. Então, aqui eu quero uma
lista de categorias. Eu vou dizer armas. O próximo que
vou adicionar é comida, e o terceiro é oceanos. Portanto, temos essas três categorias de
itens. E vamos voltar às
informações do item agora para a categoria, vou selecioná-la aqui
e dizer categoria do item E. Então, como você chama a
enumeração selecionada aqui. Na próxima, vou
dizer que enviaria uma aula. E a classe do item serve
apenas para que possamos gerar o item no mundo se o
retirarmos do inventário. Então, vamos selecioná-lo aqui
e pesquisar a base do item. Lembre-se de que criamos a base do item. Agora, esta é a
classe do item selecionada aqui e selecione a referência da classe. Muito importante. A referência de
classe, diferente da referência do
objeto, é que a referência de classe é usada
quando você gera coisas. Então, queremos gerar o item quando o
retiramos do inventário, então precisamos da classe dele. Agora vamos adicionar outro
e chamá-lo de está em summable. Então, podemos beber
ou comer esse item? E booleano, isso é apenas
uma pergunta de sim ou não. Então, é um booleano e o
outro é empilhável, então é esse item empilhável
em nosso inventário, podemos ter dois itens
e o mesmo slot, três itens e assim por diante. E o último, vou dizer o tamanho máximo da pilha. Então, quantos itens podemos ter em um espaço de
inventário, por exemplo, podemos ter 99 bananas antes de criar
outra, outra pilha. Então, todo esse tamanho do Max Stack
é que é apenas um número inteiro. Tudo bem, agora terminamos
com as informações do item. E em vez de
adicionar as informações do item ao gelo e à base
como uma variável, na verdade
vou fazer
isso por meio de uma tabela de dados. Então você pode ver aqui, eu não estou me escondendo
com o conhecimento. Na verdade, estou tentando mostrar como faríamos isso
profissionalmente em um jogo. Eu não quero fazer
isso da maneira mais fácil. Na verdade,
vamos aprender sobre tabelas de dados e
mostrarei uma maneira muito legal de
como adicionar a estrutura.
23. 4.06 Introdução às tabelas de dados: Tudo bem, agora vamos falar
sobre tabelas de dados. Então, na
pasta Blueprints, vamos clicar com o botão direito do mouse, criar uma nova pasta e chamá-la de tabelas de dados. Dentro daqui, vamos
clicar com o botão direito do mouse, ir para diversos. E aqui podemos selecionar
algo chamado tabela de dados. Você pode ver aqui uma importante tabela de
planilhas que também
é chamada. Então você pode clicar aqui. E agora temos que selecionar qual
estrutura você deseja usar. Portanto, você precisa de uma estrutura antes de
podermos criar uma tabela de dados. Lembre-se de que já fizemos nossa estrutura na lição
anterior. Então, agora podemos seguir
em frente e selecionar nossa estrutura de informações do item. E agora podemos clicar em OK. Para essa tabela de dados,
podemos chamá-la d t informações do item, tabela
de dados, informações do item. Agora vamos abrir
essa tabela de dados. E isso é o que
parece, muito, muito simples. Está apenas mostrando informações
para você. Você pode ver todas as
variáveis que você criou dentro da sua
estrutura aparecerem aqui. E agora está vazio. Assim, você pode clicar em
Adicionar se quiser e ver o que acontece
quando você clica em adicionar. Um item será adicionado
à tabela de dados aqui. Então você pode ver se eu
continuar adicionando itens, vou continuar adicionando
itens aqui embaixo. O que você pode fazer aqui, clicando
no primeiro, por exemplo, você pode ver
cada item do seu jogo, você pode definir o nome dele, a miniatura dele. Podemos definir a
descrição do item, a categoria
do
item, o copo, por exemplo, é a banana e assim por diante. Assim, você pode ver que você pode definir informações para
cada item e tê-las de uma forma
bem estruturada dentro de uma tabela de dados. Agora, isso é basicamente,
isso é o que é uma mesa. Ele contém apenas informações. Então, temos a estrutura. E com essa estrutura, criamos uma tabela de dados para que, para cada item, possamos realmente especificar
as informações aqui. E vamos fazer
isso de uma forma muito mais fácil. Normalmente não o
usamos dentro daqui. Então, em vez de tabelas Delta, geralmente não
entramos
aqui e escrevemos o nome, então gostamos da miniatura e assim por diante. Vou te mostrar uma
maneira mais completa de fazer isso. Então, vamos seguir em frente e
clicar em Excluir para cada um deles
aqui, remover, remover, remover. Então agora está vazio novamente. E vamos salvar tudo. Vamos encerrá-lo e passar para
a próxima lição e mostrarei como podemos adicionar as informações para o item.
24. 4.07 Tabela de dados: Ok, então agora eu quero
que você entre no Google Drive. Se você não tiver uma, crie uma conta. Ou você pode usar o Excel
se tiver o Excel, mas geralmente é a maneira
mais fácil de usá-lo aqui dentro, que o Google Sheets,
quando você tem uma conta aqui no Google, vá para o Google Drive, o que você pode fazer aqui. E, na verdade, aqui em cima. E você pode selecionar Drive. Quando você estiver dentro
do Google Drive, basta clicar com o botão direito aqui e
criar um novo Google Sheets. E as planilhas do Google,
vou
chamá-las de tabelas de inventário de RPG, caso tenhamos um múltiplo. Agora temos esse aqui, e eu vou
deixá-lo um pouco mais bonito. Depende de você como você
deseja criar o seu. Tudo bem, então agora
eu estilizei o meu. Eu só uso
este no centro. Eu uso esse e
uso esse aqui. Ok? Então, outra coisa muito
importante, depende de você como
você quer projetá-la. Agora, aqui em cima,
queremos escrever um documento de identidade. Então, aqui em cima eu vou
fazer todos eles fugirem. Temos um ID e agora você
realmente precisa escrever cada variável
que você escreveu aqui nas informações do item de
estrutura. Então, nós temos um ID, você
precisa ter isso para começar. E então temos o nome, depois temos a miniatura, temos a descrição. E lembre-se de
escrevê-las exatamente como você as escreveu aqui em sua estrutura. Por exemplo, se você tem um espaço aqui, precisa ter um
espaço aqui também. Portanto, escreva-os exatamente
como você
os escreveu na categoria de estrutura. Temos a perda do item, o está no
celular e temos o que é empilhável e o
último, o tamanho máximo da pilha. Ok, então agora temos
todos eles aqui. E para o ID, a
razão pela qual precisamos um ID é porque,
mais tarde, no jogo, dizemos ao motor que
fornecemos um ID aqui e o ID, se você voltar à
sua base de itens,
lembre-se de que na base do item, você criou essa variável de nome do
item. Então, isso realmente
será RID aqui. A partir disso, vamos
realmente
diferenciar o motor. Então, por exemplo, para esta banana,
vamos dizer
ao motor de qual linha vamos pegar
essas informações. Então, por exemplo, se você tem
a ideia de banana, ela vai levar
essa informação aqui. Ele sabe que precisa olhar para essa linha
em que
as ideias se espalham. E ele conhece a miniatura da banana, a
descrição e assim por diante. É por isso que criamos o nome
desse item e
escrevemos o nome do item em
todas as plantas infantis. Tudo bem, então,
na verdade, precisamos adicionar cada item aqui para que eu
não me lembre exatamente. Então, deixe-me minimizar isso e abrir a planilha do Google assim. E agora podemos
escrever uma alavanca de banana. próxima é Knife, Maneira, Oceano e Carne e
Resistência, Oceano. E lembre-se de escrever o
ID exatamente como você escreveu o nome do item aqui para
cada um dos seus itens. Então lembre-se de escrever
a mesma coisa aqui. Portanto, ele realmente sabe quais informações
deve extrair. Então, de qual linha ele
deve extrair. Vou copiar tudo isso
e colá-lo. Aqui está a miniatura. Você pode acessar a interface do usuário
e os ícones. Eu incluí algumas
das miniaturas para você. Então, para a banana,
você pode clicar com o botão direito do mouse ir para Copiar referência. E agora você pode ir aqui
e colar essa referência. Então, isso é o que parece. Parece estranho, mas agora
o mecanismo sabe onde está
esse ícone banana porque você especificou
a localização dele. Eu farei a mesma coisa com
o cutelo. Você pode clicar com o botão direito do mouse na referência
inteligente da API. E agora eu posso colá-lo aqui. Mas a referência da faca
cole aqui. E eu só vou
clicar em Não para este. E para o oceano da menopausa, sua referência e também
para a carne. E para o oceano de resistência. Tudo bem, vou
preencher o primeiro aqui e depois você pode fazer
o resto,
senão vai levar uma eternidade. Para essa descrição,
você pode simplesmente adicionar uma descrição para
seus itens, por exemplo, para a banana, eu posso escrever uma banana deliciosa ou
algo parecido. Para a categoria, Lembre-se, na categoria de
itens de enumeração, temos a categoria de
armas, alimentos e poções. E isso também é o que você
tem nas informações do item. Lembre-se de que, para a categoria,
você usa essa enumeração. Portanto, pode ser um desses três agora. Se voltarmos, por exemplo, a banana é a, é comida, por exemplo, da mesma forma que a poção é poção. Lembre-se de escrevê-lo exatamente
como você o escreveu aqui. E para a classe do item, a maneira de obter
essa referência não
é acessando aqui e os itens,
clicando com o botão direito do mouse e dizendo copiar referência. Porque se você fizer isso,
na verdade não é uma classe de item. Este é um ator de itens. Então, vamos excluí-lo daqui. A maneira como eu costumo fazer
isso é acessando uma tabela
de dados aqui. E eu vou
fazer um item aleatório aqui. E vamos selecionar uma
classe de item, por exemplo, a banana. Vou clicar com o botão direito do mouse
aqui e clicar em Copiar. Agora posso voltar às minhas
planilhas do Google e colá-las aqui. E essa é a
correta para classes de itens. Então, aqui para a última
referência aqui, correta é se
você ver a classe
gerada pelo blueprint , esta
é a correta. Ok, agora temos
a banana aqui e o que você pode fazer é copiar isso, colá-lo aqui embaixo, e você pode simplesmente mudar o nome da
banana para cutelo. E esse aqui também. Então, duas vezes alavanca, alavanca. Ele pode fazer isso porque o
resto é consumível. É só um sim ou não. O que eu costumo fazer nas Planilhas
do Google é
acessar Formatar e fazer a formatação
condicional. E em vez de aqui, eu
seleciono para a regra de formato, eu seleciono o texto que está exatamente aqui. Podemos dizer falso. E apontará para vermelho, ou a cor será
vermelha se for falsa. E vou adicionar outra regra
e mudá-la para verdadeira. E depois mude a cor para verde, se for verdade,
assim. Agora eu posso ver se
eu escrevo falso aqui
, fica vermelho, pirita, verdadeiro, fica verde. E isso é para booleanos aqui. Sempre que você pega um booleano, ele diz verdadeiro, assim. Sempre que você o
desmarca, ele diz falso. Então, isso é muito legal. Agora, deixe-me excluir
isso e, em vez disso, vou clicar em
Inserir e marcar uma caixa de seleção. Eu posso ver nesta caixa de seleção que, se estiver desmarcada, está vermelha. Se estiver marcado, o que é verdade. Na verdade, é assim, verde. Na minha opinião, é muito mais legal
. Você pode simplesmente arrastar isso em todos os seus itens desse
jeito. Na verdade, deixe-me transformar em
falso antes de fazer isso, arrastando-o para todos os
itens desse jeito. E eu acho que isso
é muito mais limpo. Ok. Agora que você
preencheu todas as informações
de cada item, clique em Arquivo e clique em
Baixar e baixá-lo como um arquivo CSV. Agora vou clicar
aqui e mostrar na
pasta aqui na minha pasta
Downloads. Agora eu posso renomeá-lo e
você pode renomeá-lo com o mesmo nome exato que você
deu à sua tabela de dados. Então, chamamos as informações do item DT. E agora eu posso abrir meu motor e aqui vou
fechar tudo. Vou
até minha tabela de dados. E aqui o que eu
quero que você faça é importar é que ele seja
capaz de acessar seu motor. Então, o que você pode fazer
é clicar e arrastar isso para essa tabela de dados. E agora vai
dizer Importar. Está tudo bem, legal. Vamos clicar aqui e
ver se temos algum erro. Agora posso ver uma maneira muito legal de
preencher todas as informações. Agora temos, por exemplo,
para a banana, o nome, a miniatura, a descrição, a categoria, a classe do item. Se for consumível e empilhável
e do tamanho máximo da pilha, então os temos para
cada item. Essa é a maneira mais fácil de fazer
isso aqui na tabela de dados. E o motivo também é se você tem não programadores
em sua equipe, por exemplo, designers de
jogos e qualquer outra coisa. É muito mais fácil para eles simplesmente alterar as informações das planilhas de dados e
baixá-las aqui e simplesmente
importá-las para o jogo. Dessa forma, eles
alteram automaticamente todas
as informações dos itens. Então, muito legal. Se você tem um
designer de jogos que não sabe nada sobre programação, pode simplesmente fazer essa
alteração nas informações, por exemplo, você pode
ter algo
como o valor da moeda e quanto
custa definir quanto
custa comprar esses
itens na loja. E as pessoas podem simplesmente
mudar os valores aqui. Informações importantes,
e
elas serão alteradas automaticamente aqui. Tudo bem, agora que isso foi feito, vamos criar uma função de
biblioteca onde
mostrarei como extrair
informações de cada linha.
25. 4.08 Item Info Função de biblioteca: Tudo bem, então vamos
clicar na pasta de
abertura azul. Vamos clicar com o botão direito do mouse e criar uma
nova pasta chamada bibliotecas. E dentro daqui,
vamos clicar com o botão direito. Vá para blueprints e selecione aquela chamada,
Vamos ver aqui, biblioteca de funções de
blueprint, uma biblioteca aqui e chame-a de biblioteca de funções PP, porque só podemos ter uma. A biblioteca de funções,
se você abri-la. É basicamente uma biblioteca
de funções, então
podemos ouvir que você pode simplesmente
adicionar novas funções. Basicamente, tem uma biblioteca de funções que você cria aqui. O legal de uma biblioteca é que você pode usá-la globalmente. Então, por exemplo, aqui, digamos, haha, eu não sei. Vamos apenas chamar
essa função hahaha. E agora no player, podemos simplesmente ir
aqui até o jogador
agora, clicar com o botão direito do mouse
e dizer, hahaha. E agora podemos ver que podemos
realmente chamar essa função da biblioteca de funções
e podemos usá-la aqui. Portanto, tudo o que criamos é uma biblioteca de
funções que podemos usar globalmente em qualquer
projeto que desejarmos. Então, só para você saber, seu jogo pode ficar muito lento se você tiver centenas
de funções aqui. Portanto, é uma má prática simplesmente
criar funções
aqui em vez de seus respectivos planos,
se você não precisar delas. Mas para as informações do item, as informações do item,
na verdade precisamos delas em
vários modelos. Então é assim que você precisa
usar bibliotecas de funções. Você precisa pensar quantas
vezes você vai usar essa função se for usá-la no player e no controlador do
player, talvez você a use
em outra classe de Blueprint. Se você for
usá-lo várias vezes, é muito melhor simplesmente
colocá-lo na biblioteca de funções. Portanto, você não precisa
fazer isso
repetidamente em
todas as aulas do Blueprint. Por aqui, vamos
criar uma nova função. Vamos clicar em F2
para mudar o nome. Vou
chamá-lo de obter informações do item. Para obter informações sobre o item, o que eu quero fazer
é clicar com o botão direito do mouse aqui e dizer obtém uma linha da tabela, linha tabela de
dados. Ok? Então, para esta aqui,
temos
que selecionar de qual tabela de dados
estamos falando? Estou falando sobre as informações do item do DDT. E qual é o item ou
qual é o nome da linha. Agora você pode ver aqui, quando selecionamos um nome de linha, por exemplo, a faca, e
executamos essa função. Ele sabe que precisa obter informações da fileira de
facas aqui. Então, se eu abrir meu
Google Drive novamente, ele obterá informações
desse ID, que é a faca aqui. E então ele conhece todas essas informações
que aparecem aqui. Porque se você pegar
aqui e dizer pausa, então você divide essas informações em todas essas
variáveis que você criou. Então, se selecionarmos o nome da
linha faca, agora
ele saberá qual é a miniatura da
faca, a descrição
dela, a categoria, porque você definiu
todas elas aqui dentro da sua
tabela de dados no Google Drive. E a razão pela qual ele sabe qual nome de item de linha você tem
é porque em cada item, lembre-se de que em cada item, você definiu essa variável
chamada nome do item. Então, para a carne
, por exemplo , vai pegar
isso que você escreveu aqui e
o nome do item se encontrar. Vamos passar
por aqui. Lembre-se de que essa é uma variável de
string. Você vai para a mesma base. Criamos isso como uma variável
de string aqui. E as informações do item, vou apenas fazer uma entrada de string que podemos usar posteriormente
para colocá-la aqui. E vamos chamá-lo de nome do item. Ok, então nós temos esse. E agora, se você for
até a tabela de dados, haverá um pequeno erro
se não fizermos isso. Então, na tabela de dados, você vê aqui que o id
não tem espaços. Então, mesmo que você coloque um espaço no seu Google Drive
ou no Google Sheets, você pode ver aqui que você tem
um espaço, você tem um espaço, mas o espaço é
automaticamente removido aqui. Então, por exemplo, para a poção, se eu for até o item poções de
resistência e ver aqui que você
escreveu um espaço. Mas para as tabelas de dados, elas não podem ter
espaços no ID. Dessa forma,
precisamos realmente fazer algo porque todos os seus
itens têm espaço. Esta é a tabela de dados, não tem espaços
e vai te dar um dinheirinho e
você não sabe do que está falando. Então, precisamos remover
os espaços de todas essas maneiras de fazer isso
aqui na função, basta sair daqui
e dizer substituir. Então, vamos pegar
o item do nome. Vamos substituir, basta escrever como espaço
aqui na frente. Só um espaço. E foi isso. Então,
ele substituirá todos os espaços por nada, que significa que ele
remove essa base. E então ele vai
receber o nome da linha. Dessa forma, podemos remover
todos os espaços que
criamos dessa forma. E vamos deletar
esse aqui por enquanto e dizer nó de retorno. E arraste isso para
o retorno agora para criar
automaticamente uma
saída aqui com as informações do item. E vamos chamar isso de informação de
um item. Então essa era a função que
precisamos para criar, compilar e salvar tudo. Então, o legal está aqui, por exemplo no player,
agora podemos dizer obter informações do item. Essa é a função
que acabamos de criar. E você pode ver aqui que realmente não
precisamos conectar
pinos a partir daqui, porque no Blueprint geralmente você os conecta
aqui porque está
configurando informações. Mas esses, esses
verdes, como você pode ver aqui, eles não têm isso e isso é porque eles estão apenas
obtendo informações. Eles não estão definindo
nenhuma informação. Mas não precisamos passar por
isso. Então, para obter informações aqui, vamos voltar para a biblioteca de
funções. Eles podem obter informações do item, clicar em puro e agora compilar. E vamos voltar para o jogador. Agora podemos dizer obter informações sobre o item. E você pode ver que aqui está, em vez
disso, ele o transforma em uma função
get. Então é por isso que você pressiona puro. Ok, agora podemos
obter as informações desse item. Depois, basta especificar qual item estamos falando. Vamos fazer isso mais tarde. Então, vamos fazer isso
dinamicamente por meio do inventário dependendo do item que você selecionar ou saquear do chão. Então, ele vai lhe dar
o item, por exemplo aludimos ao caule em
uma poção do solo. Ok, vai
passar por isso aqui. Vai colocar o
nome do papel aqui, poções de resistência. E agora ele já sabe de quais
informações você está
falando , porque você definiu todas essas informações aqui. Então, na saída aqui, se você arrastar e disser break, agora ele conhece a
resistência, as poções, categoria de descrição em
miniatura e assim por diante. Então, coisas muito, muito legais. Te vejo na próxima aula.
26. 5.01 Criando o componente de inventário: Para criar o componente de inventário, vamos para a pasta
Blueprints. E dentro daqui, vamos
clicar com o botão direito do mouse e
criar uma nova pasta, e eu vou
chamá-la de componentes. Dentro desta pasta, vamos clicar com o botão direito do mouse e
clicar na classe Blueprint. Então, aqui o que
vamos criar é esse componente de ator
é basicamente o componente de inventário
que estamos criando. Então, vamos clicar nele. E eu vou dar a ele
um prefixo de AAC para o componente do ator e
chamá-lo de inventário. Tudo bem, então, se você
clicar duas vezes
nele, terá
a aparência de uma planta comum
, como você está acostumado agora. Então, por enquanto, não vamos trabalhar
aqui dentro deste. Vamos ver os planos
e realmente encontrar o jogador. Então, dentro da
pasta do jogador e do player, e dentro do player, agora
podemos adicionar os componentes do
inventário. Então, aqui nos componentes, clique em Adicionar e pesquise o inventário de AAC
que você acabou de criar. E aqui está. Agora
temos o inventário. Mas, no momento, não podemos
realmente fazer muita coisa com isso. Então foi isso para esta lição, apenas adicionando, criando e
adicionando esses componentes de inventário. Então, vamos seguir em frente.
27. 5.02 Estrutura de fenda de inventário: Antes que possamos
continuar trabalhando com o componente
de inventário, é criado. Vamos seguir em frente e criar mais
duas estruturas. Estamos perdendo essa
última estrutura
na estrutura da categoria. Então, vamos para a pasta
Strokes. Aqui criamos as informações do item. Agora vamos clicar com o botão direito do mouse
aqui novamente e ir para plantas e selecionar a estrutura. A este
chamaremos de slots de inventário. E vamos entrar aqui, saber qual é a estrutura dos
slots do inventário. Basicamente, ele contém
informações sobre o que está dentro desse espaço de inventário
específico. Lembre-se de que aqui na interface do usuário
criamos esse slot de inventário. Então, basicamente, temos uma estrutura que
contém informações sobre o que o slot específico no inventário contém. Então, primeiro, ele
contém o item. Então, o que quer que tenhamos
carregado e o item, se você clicar aqui,
lembre-se de que criamos uma estrutura chamada informações do item. Portanto, ele contém esse item
dentro dos slides. Em segundo lugar, ele também
contém a quantidade de itens
desse item, e isso é apenas um valor numérico
inteiro. Em seguida, ele contém
o próprio widget. Então, vou
chamá-lo de slot de inventário. Em seguida, selecionando a interface do usuário, criamos o slot de inventário WB, para que ele contenha a própria variável do
slot de inventário. E como última coisa, quero adicionar um índice de slots, que podemos usar mais tarde. Não se preocupe com isso por enquanto. Mas o índice de slots é exatamente de qual slot de inventário
estamos falando? Porque lembre-se, quando
você faz um inventário, você tem muitos, muitos
espaços no inventário. Portanto, é sempre bom
fornecer a eles um índice que você possa usar
posteriormente, se necessário. E foi isso para
o espaço de inventário. Então, vamos passar para
a próxima lição.
28. 5.03 Estrutura e tabela de dados de categoria de inventário: Vamos agora criar
a estrutura para
as categorias. Então, voltando para a pasta de
estruturas, clique com o botão direito novamente e vá
para a estrutura de esquemas. E vamos chamar isso de uma categoria
de inventário. Vamos abrir esse aqui em cima. Esse é muito simples. Ele simplesmente conterá que categoria
estamos falando. E, novamente, temos essa
enumeração chamada categoria do item, esta aqui, categoria do item. E a segunda coisa que precisamos é do ícone da categoria. Então, qual é a aparência? Oh, ícone da categoria. E temos alguns
ícones para a categoria. Agora, esse tipo aqui
é uma textura 2D. Textura 2D,
simplesmente uma imagem. Essa única textura 2D aqui
nos ativos,
na verdade, aqui embaixo na interface do usuário, temos ícones e
ícones para as categorias. Então, por exemplo, a
categoria de armas é essa faca aqui temos a categoria
e o próprio ícone. Em seguida, precisamos criar
uma tabela de dados para ela, assim como fizemos antes. Então eu vou
abrir isso aqui. Esta é a tabela de dados de
informações do item. E, na verdade, aqui embaixo eu
vou chamá-lo de informações do item DT. Vou criar um novo
clicando no sinal de adição aqui embaixo. Vou chamar isso de uma categoria de inventário
DT. Eu só vou
arrastar essas mesas. Esses campos são um
pouco mais amplos aqui? Simples assim. Ok, então, como antes
, aqui temos um id. E lembre-se,
pela estrutura que você criou, temos a categoria e depois
o ícone da categoria. Eu vou
torná-los ousados aqui. Então, para o ID, basta escrever
o nome da categoria. Lembre-se de que
temos armas, temos comida e
temos quocientes. Vou
copiar isso de volta aqui. Novamente, lembre-se de
escrever isso exatamente como você escreveu
aqui na enumeração, caso contrário não funcionará. Portanto, na categoria de item de
enumeração do numerador, essas são suas categorias. Portanto, lembre-se de que, na tabela de
dados,
precisamos especificá-los
exatamente assim. Agora, para o ícone da categoria, precisamos copiar as referências. Então, vou voltar aqui
na interface e nos ícones. Agora, para a
categoria desta arma, eu tenho esta. Então, clique com o botão direito, como
antes de fazermos com os itens, clique com o botão direito, copie uma
referência, volte aqui. Agora, quanto à comida, vamos
ver qual era. Era essa única categoria de comida. Clique com o botão direito na sua
referência, provei. E para as poções aqui,
consumíveis, oceanos. Clique com o botão direito,
copie sua referência e cole-a aqui. Agora, basicamente,
terminamos com este. Então, vamos clicar em Arquivo, baixar como um arquivo CSV, vou renomear esse arquivo CSV aqui para a categoria de inventário
DT. E antes de fazermos qualquer coisa, vamos voltar ao motor. Vá para Tabelas de dados, clique com o botão direito do mouse aqui, vá para diversos e
selecione Tabela de dados. Agora temos
que selecionar de qual estrutura estamos falando? Estamos falando sobre a estrutura da categoria de
estoque, por
exemplo, e chamamos isso de
uma categoria de inventário DT. Agora, o que você pode fazer é, novamente, ir para a pasta de download. Podemos arrastar isso para cima
dessa tabela de dados e ela
importará tudo automaticamente. Agora vamos abri-lo e ver
se tudo está correto e verificar
tudo o que
você pode ver, pois importou
tudo corretamente. E agora vamos salvar tudo. A última coisa que
precisamos fazer novamente criar uma função de
biblioteca. Então, vamos para a
biblioteca de funções da biblioteca. E aqui, como antes, vamos criar uma nova
chamada Obter informações da categoria. Ou talvez seja melhor chamá-lo de obter informações da categoria de inventário. Portanto, somos específicos sobre
o que estamos falando. Aqui, novamente, vou adicionar uma entrada de string
como antes. E vamos chamar isso de nome de
uma categoria. E, como antes, vou entrar nas informações
do item e simplesmente
copiar e colar isso aqui. Lembre-se de que a única
coisa que fizemos foi escrever um espaço aqui para
remover todos os espaços. Estamos
substituindo-os por nada. Então, vou para a categoria de
inventário, colando-a aqui, conectando a string de origem. E a partir daqui podemos
dizer a linha Obter tabela de dados. Assim como antes, selecionamos
nossa categoria de inventário DT. E quanto ao nome
, fica aqui. E para a saída que agora podemos, podemos obter um
nó de retorno em um nó de retorno. E, novamente, como
antes, arraste-a para o retorno agora
para criar automaticamente uma variável aqui e
chamá-la de informações de categoria. Ok, agora podemos
usá-lo como antes. Agora podemos ir a qualquer lugar em qualquer Blueprint e obter essas informações. Então, por exemplo, eu posso ir até o player e aqui
podemos dizer Informações da categoria. E como você pode ver novamente, essa é uma função definida, então precisamos voltar à nossa
biblioteca antes que eu esqueça, clicar nas informações da categoria e
defini-las como puras. E agora você pode ver que é puro. É só obter informações. Então, precisamos,
não precisamos configurá-lo. Então, aqui precisamos escrever
o nome da categoria. Isso será definido
automaticamente posteriormente. Então é isso que temos
feito até agora. Criamos uma estrutura
de inventário. E aqui, criamos uma tabela de dados no Google Sheets e o
importante está aqui. E então criamos uma função de biblioteca chamada obter informações da
categoria de inventário, que apenas obterá informações sobre qualquer nome de linha que
inserirmos aqui posteriormente. E podemos obter essas informações.
29. 5.04 Criando as variáveis de inventário: Vamos seguir em frente e criar as variáveis para o inventário. Então, vamos voltar para a pasta de
componentes dentro do componente de inventário
que criamos anteriormente. Vamos abrir o editor de
plantas completo. Dentro daqui, precisamos
criar algumas variáveis. Primeiramente, precisamos criar uma variável chamada
quantidade de slots. Então, precisamos definir
quantos slots nosso inventário tem? E o tipo é um
número inteiro porque é apenas um valor numérico,
como você pode ver aqui. E a próxima coisa que
precisamos adicionar
é a categoria de inventário selecionada. Então, mais tarde, precisamos definir qual categoria
selecionamos. Essa é a
categoria iGEM, assim como esta. Posteriormente, podemos definir qual
categoria selecionamos dependendo do botão
da categoria que estamos pressionando. Por enquanto, podemos
deixar que seja assim. Em seguida, precisamos criar as
categorias que temos. Portanto, precisamos ter todos
os itens que eluímos do solo dentro das
variáveis que podemos conter. Então, primeiro temos a categoria de
armas, depois temos
a categoria de alimentos
e, em seguida, temos
os oceanos como uma consulta. E lembre-se da
categoria aqui
nas estruturas em que criamos
esses slots de inventário. Esse espaço de inventário contém
o item, a quantidade, o próprio espaço de inventário, o próprio widget
e o índice do slide. Então, essas são, na verdade
, as categorias. Então, vamos clicar aqui e dizer slots de
inventário e selecionar
essa estrutura aqui. Agora, se você
compilá-lo,
verá que tem esse slot aqui. No entanto, para uma categoria,
temos vários slots. Então, para cada categoria, temos 16 ou quantos slots, neste caso, para este jogo, vamos com 16 slots. Para as categorias. Eles não
contêm apenas um item. Lembre-se de que, para cada
categoria, eles contêm a quantidade de vagas
que definimos aqui. Então, por exemplo, se tivermos 16 vagas, categoria de
armas tem 16 vagas, a categoria de alimentos tem
16 vagas e assim por diante. Então, em vez de tê-la
como uma variável normal, precisamos mudar o tipo de
variável para uma matriz. Uma matriz é simplesmente um contêiner onde temos
várias dessas estruturas. Então, clicando em uma
matriz e compilando, e agora vou compilar. Você pode ver aqui se
eu clicar no sinal de adição, agora temos esse slot singular dentro dessas categorias. Então, aqui neste slot, ele contém um item
e a quantidade. E se eu clicar em Mais novamente, ele contém outro item
e a quantidade e assim por diante. Então você pode imaginar que,
para uma categoria, temos 16 itens aqui, abaixo da linha aqui. Agora você pode ver que faz
sentido que precisemos ter uma matriz porque ela não contém apenas um compartimento de inventário. Ele contém vários slots
de inventário. Vou deletar
todos esses slots aqui. Vamos adicioná-los
dinamicamente no jogo. Precisamos fazer a mesma coisa
aqui para a categoria de alimentos, pesquisar lotes de estoques. E aqui novamente, faça o inventário dos slots e lembre-se de
transformá-los em uma matriz. Então essa também ou uma
matriz e os oceanos
aqui embaixo até uma matriz
e vá em frente e clique em compilar e
salvar tudo. E agora isso é o que
temos até agora. Então, vamos definir
a quantidade de slots. Na verdade, vamos
voltar para o jogador. O jogador o abrindo. E se você clicar no componente de
inventário, agora poderá ver que temos
essas variáveis que podemos jogar com a
quantidade de slides. Na verdade, vou
definir 16 porque este é meu inventário
e tenho 16 vagas. Se você quiser mais slots, você pode ir em frente e adicionar
mais slots ao seu jogo. E para o inventário selecionado, vamos
configurá-lo dinamicamente
no jogo, dependendo da
categoria em que estamos pressionando. O mesmo acontece com
as categorias: também as
definimos dinamicamente no jogo. Então foi isso por enquanto. Lembre-se de
definir a quantidade de
lodo para seu inventário
e vamos seguir em frente.
30. 5.05 Dimensionando as variáveis da categoria de inventário: Aqui estamos dentro do componente
de inventário. E antes de podermos usar
essas matrizes aqui, precisamos redimensioná-las. Então, quando você cria uma matriz e uma variável de um tipo de matriz, você precisa redimensionar a matriz antes que
possamos realmente usá-la. E para essa matriz, na verdade, vamos
redimensioná-la dependendo da quantidade de vagas
para o inventário que temos. Vou excluir isso aqui, botão direito do mouse
e dizer eventos personalizados. E vamos chamar
isso de
inventário de inicialização porque vamos executá-lo como a primeira coisa. Aqui embaixo. Vamos analisar isso com
os clientes. Então, CL, inicialize o inventário para que a replicação seja
executada no cliente proprietário e confiável. E lembre-se de executar o
cliente aqui em cima e os
eventos personalizados normais desse jeito. Então, muito, muito simples. Vamos pegar uma
das variáveis aqui. E para a matriz,
se você quiser
saber quais funções você
pode criar para uma matriz, basta escrever uma matriz. E então você pode realmente
ver que tudo isso é para a matriz e você pode jogar
com eles como quiser. Mas, por enquanto,
vamos dizer redimensionar, que estamos redimensionando essa matriz. O tamanho é
apenas a quantidade de slots que
criamos aqui. Então, ele vai redimensioná-la, essa matriz para ter 16 slots. Portanto, lembre-se de que
no player, no bp player aqui, se você clicar no componente de
inventário, dependendo de quantos slots
você selecionou aqui. Então, aqui para este jogo, estou apenas criando 16 slots. Então, ele também vai
redimensionar essa matriz para ter 16 slots. Vamos fazer isso para a comida
também a partir daqui e dizer redimensionar e também para a poção, arraste aqui e diga redimensionar. Agora conecte tudo. E você também pode
arrastar essa quantidade de slots e se conectar
aqui. Se você quiser ser mais
organizado, novamente, você pode clicar duas vezes nos nós de
espera e redirecionar. E só para que você possa selecionar
tudo e pressionar Q e a palavra-chave que tornará
tudo correto assim. E lembre-se de que você precisa executar esse evento em algum lugar
para que ele seja executado,
porque, no momento, não executamos esse evento em nenhum lugar do nosso código. Então, vamos colocá-lo aqui para o jogador sempre que ele aparecer. Então, aqui no
início do jogo,
vamos executá-lo aqui e podemos derivar
desse inventário do AAC. Lembre-se de que esse AC
inventa nosso inventário, então podemos chamar esses eventos, então podemos chamar de
inicializar inventário e podemos fazer isso aqui
no início. Se você quiser ver
se isso está funcionando, porque agora, se
você clicar em Jogar, você realmente não consegue ver nada porque está apenas redimensionando aqui. Mas às vezes é muito
bom usar nós de impressão. Então, quando cordas e aqui, talvez você
possa simplesmente pegar esta,
por exemplo, e dizer comprimento. Qual é o comprimento
dessa matriz aqui? Então, vamos conectá-lo
a essa string de impressão. E agora vamos compilar.
Clique em jogar. E aqui em cima você pode
ver que diz 16. Eu posso fazer isso mais longo
para você ver. E deixe-me fazer a cor vermelha. Então, se eu clicar em
Jogar, você pode ver no canto superior esquerdo da
tela que diz 16. Portanto, o tamanho das
matrizes está correto. Agora, agora vamos clicar em compilar, salvar tudo
e seguir em frente.
31. 5.06 Exibindo as categorias de inventário: Agora vamos exibir os widgets da categoria de
inventário. Então, vamos voltar para
a pasta Blueprints e ir para o controle
do player. Lembre-se de que, no controle
do player, estamos trabalhando com widgets. Dentro daqui, quero que você vá
até o gráfico de eventos botão direito do mouse
e vamos
criar eventos personalizados. Então, para esse evento personalizado, vamos chamá-lo de
inventário de tarifas, widgets de categoria. E lembre-se também de copiar o nome e vamos fazer
um para o cliente. Porque, novamente, a interface do usuário é feita
por meio dos clientes. Então, clique com o botão direito do mouse, crie um novo evento personalizado e este será
executado no cliente. Portanto, para as réplicas, vamos alterá-lo para ser executado em um cliente de
clonagem e confiável. Agora vamos executar esse cliente com
um dos mais comuns. Então, executamos o código e temos a seguinte
aparência. Então, para os widgets de
categoria de inventário, se voltarmos à nossa interface de usuário e
dentro do inventário, aqui, criamos uma
caixa vertical chamada categorias. Então, essa é a
caixa vertical e queremos
adicionar as categorias a
essa caixa vertical. Agora, para fazer isso primeiro, clique nessa caixa
vertical e
precisamos configurá-la como variável. Então, podemos realmente usar essa variável e adicionar
itens dentro dela. Agora, quando é variável, vamos voltar ao controle do
player e agora precisamos acessá-lo. Portanto, lembre-se de que está
no inventário do WB e você já criou uma
variável a partir dele antes. Então, vamos arrastá-lo até aqui e obter essa variável. Agora podemos arrastar e escrever o
nome da caixa de vegetais. Então, categorias VB. Antes de fazermos qualquer coisa, arraste-se daqui e
diga claramente, crianças. Como vamos redesenhar widgets de
cada categoria e slots de
categorias quando criarmos, criá-los mais tarde, quando redesenharmos, teremos que
remover os antigos. Por exemplo, ao carregar um item, você precisa redesenhar
tudo para atualizar a interface do usuário. Portanto, temos que limpar
os antigos antes de fazer qualquer coisa. Então, vamos esclarecer essas crianças
antes de adicioná-las novamente. E para adicionar as categorias, vamos arrastar daqui agora e
dizer que uma linha de tabela nomeia. Mas isso acontece,
é entrar em
nossa tabela de dados para a categoria de
inventário. Aqui, ele pegará cada uma
das linhas e podemos
imprimi-las na tela. Então, aqui estão todos os nomes. Então, aqui o que eu quero que
você faça é arrastar
daqui e dizer para cada loop. Então, vamos
percorrer cada linha. Vamos voltar aqui
apenas para mostrar os planos, as tabelas
de dados e
a categoria de inventário. Dentro daqui,
temos três nomes de linhas. Então, as armas, a
comida e as poções. E isso é o que
vai acontecer aqui. Vai ser repetido para
cada um desses nomes aqui. Então, três vezes para cada um deles. Lembre-se de que criamos uma função dentro da biblioteca de funções, dizendo obtém informações da categoria. Então, vamos obter nossa função de
informações de categoria aqui. E agora vamos inserir esse nome
nessa string e ela converterá automaticamente a variável de nome em uma string. Então, agora estamos recebendo
as informações da categoria. E se você não se lembra do
que isso, do que era, você pode
clicar duas vezes nele e ele o
levará à função
e à biblioteca da função. E você pode ver o que faz simplesmente obtém o nome e, em seguida, obtém as
informações da linha da tabela de dados e as exibe aqui. Então, podemos realmente usá-lo
no controlador do player. Então, aqui você
pode clicar com o botão direito do mouse pino Split Struct
e obter as informações ou arrastar
e dizer break, isso é o que eu costumo fazer. E aqui você também pode obter as
informações. Então, o que estamos
tentando fazer é, para cada uma dessas categorias de
inventário, criar um widget e adicioná-lo a essa caixa vertical. Agora vamos arrastar a partir daqui e dizer Criar widget. Então, já conhecemos
essa função. Então, vamos
criar um widget. E o widget que
vamos criar é esse
widget de categoria de inventário que criamos anteriormente. Lembre-se de que, na interface do usuário, se formos para a categoria de
inventário da categoria, esse é o widget que criamos. Então, esse é o
que estamos criando. E estamos criando e para
cada um desses nomes de linha. Então, vamos
criá-lo três vezes. Portanto, é muito legal
trabalhar com tabelas de dados. Se você decidir adicionar
uma quarta categoria, ela
será automaticamente considerada aqui e
adicionada automaticamente ao inventário. muito legal fazer isso
dinamicamente assim
, porque ficará muito mais fácil
para você mais tarde. Ok, então aqui, quando
criamos o widget, queremos dizer a ele
qual é a categoria. E também queremos
inserir esse ícone, porque lembre-se de
que temos esse ícone estático e queremos
alterá-lo
dependendo da categoria. Então, vamos voltar para a categoria de
inventário. Aqui, vá para o gráfico. E agora vamos clicar no
sinal de mais aqui para ver as variáveis. A primeira variável que
vamos criar são as categorias. Então, vamos atribuir
a categoria a ele. E, em seguida, temos
o ícone da categoria. E esta vai ser
de textura 2D. Agora, o que vamos
fazer é clicar na primeira e depois
clicar em Instância editável
e expor no spawn. E você pode fazer isso
em ambos. Portanto, o ícone da categoria também pode ser editado por
instância
e exposto no spawn. O que isso faz é se você
voltar ao
controlador do player agora, clicar no arquivo e
atualizar todos os nós. Você pode ver que os
expusemos aqui para que possamos realmente inserir
informações a eles. Então, vamos arrastar essa categoria
e atribuí-la aqui. E vamos arrastar esse ícone
e atribuí-lo também. Agora criamos um widget, então ele vai criar
três widgets. Então, até agora, o que estamos
fazendo é limpar as crianças para que essa caixa
vertical fique limpa. Depois disso, obteremos
todos os nomes de nossas linhas, que têm todos
esses três aqui. O que estamos dizendo é que,
para cada uma dessas linhas, vamos pegar o nome, vamos pegar as informações da categoria do
inventário. E a partir daqui, estamos pegando
o ícone e a categoria e conectando-os a essa função de
criação de widget. Então, agora estamos criando
três widgets, no entanto, lembre-se, estamos apenas
criando eles aqui. Precisamos adicioná-los
também à caixa vertical. Então, vou copiar isso aqui, as variáveis de inventário e caixa
vertical. E agora o que podemos fazer é
arrastar a partir dessa caixa vertical. E podemos dizer adicionar
criança à caixa vertical. E vamos conectá-lo agora. E qual criança devemos adicionar? Simplesmente esse widget
que acabamos de criar. Agora, o que você pode
fazer é
clicar duas vezes nessas linhas para fazer anotações
ferroviárias e organizar seu código um pouco melhor. E agora vamos compilar. Então, agora, se clicarmos em
Jogar, nada acontecerá. E a razão pela qual
isso não acrescenta. Então, se você clicar em I para abrir o inventário,
nada acontecerá. Lembre-se de que você não
executou esse código em nenhum lugar, então precisa
escrevê-lo em algum lugar. Portanto, crie widgets de
categoria de inventário. Na verdade, vamos
executá-lo para o jogador. Então, se você voltar
aos planos e
formos para o jogador B, jogador aqui no
início do jogo, vamos agora dizer Get Controller. E vamos pegar o
controle para esse player. Então, podemos dizer: lembre-se de que aqui
criamos uma interface chamada int player controller. Portanto, temos a referência do
controlador do player. Portanto, podemos dizer que é layout, controle ou referência
porque essa é a interface
que criamos anteriormente. Agora, como controlador do jogador, porque lembre-se, estamos trabalhando no controlador do
jogador, então precisamos da referência
e agora podemos chamar widgets da
categoria de inventário de taxas. Então, dentro daqui, digamos que crie widgets de
categoria de inventário. E isso deve funcionar. Então, vamos compilar e
salvar tudo. Agora isso vai nos dar um bug. Então, se clicarmos em jogar
e eu clicar no olho, você verá que nada acontece. E se eu sair daqui, isso vai nos dar um bug. E o motivo é que, se
voltarmos ao controlador do player, você está
obtendo informações dessa variável
de inventário do WB. No entanto, antes de
clicarmos no olho, lembre-se que você o executa instantaneamente
quando o jogador está surgindo. No entanto, essa variável
ainda não foi criada. Essa variável só é
criada sempre que você clica
no botão I
, porque então você abre o widget aqui e
cria essa variável. Então, se você puder copiar isso aqui, criamos um widget para o inventário e você
volta ao gráfico de eventos. E aqui na
inicialização dos widgets, vou
adicionar o inventário, porque os também
vou
adicionar o inventário, porque os
widgets India Sheila is são executados automaticamente quando começamos a jogar. Então, na verdade, ele é
criado imediatamente e também
podemos usá-lo aqui
no início do jogo para
o jogador. E a razão pela qual
ele é criado mais rapidamente no controle é porque o controlador do player é criado antes da criação
do player. É assim que é. Então, agora vamos clicar em jogar. E quando clicamos em IA, você pode ver, agora podemos
ver as informações aqui. Podemos ver todos
os três widgets. No entanto, os ícones não
foram alterados. E porque essa é a etapa
final que estamos perdendo. Então, vamos voltar aqui. Vamos para a categoria de
inventário do WB. Aqui. Vamos excluí-los e
manter a construção do evento. Para a
construção do evento, isso é exatamente o mesmo que a jogada inicial. O que precisamos fazer
é escolher essa categoria de imagem,
porque lembre-se, se você clicar nela, isso é
o que você chamou aqui. Então esse é meu ícone, minha imagem. Então, eu preciso pegar essa
variável aqui e dizer, define o pincel a partir da textura. E agora podemos escolher a
textura para configurá-la. A textura é simplesmente esse ícone de
categoria que acabamos de definir. Porque lembre-se,
no controle do player, toda vez que criamos
a categoria, atribuímos o respectivo ícone de
categoria a ela. Na verdade, já
temos essa variável pronta e podemos
conectá-la à textura. Agora vamos compilar e
clicar em play. E se eu clicar nele
agora, você poderá ver que todos os ícones
da categoria são
atribuídos automaticamente. Então, apenas uma rápida olhada. Se voltarmos aqui, criamos esses widgets de categoria de
inventário de crédito. E nós o executamos por meio do cliente porque os widgets são executados
no cliente. Em seguida, removemos ou limpamos as crianças aqui apenas para
garantir que elas estejam vazias e, em
seguida, obtemos todos os nomes das linhas da tabela de
dados. E para cada um desses nomes que estão recebendo
suas informações. E com essas informações, podemos conectá-las
ao widget de criação. Então, estamos criando os widgets um por um por meio
disso para cada loop. E estamos inserindo
as informações. Também os estamos adicionando
um por um com a inclinação. Então, agora criamos as categorias e as
adicionamos ao nosso inventário. Então, vamos passar para
os slots de inventário.
32. 5.07 Exibindo as fendas de inventário: Os slots de inventário, vamos voltar ao controle do
jogador. E assim como antes,
as categorias, vamos até aqui e
criar um novo evento personalizado. E vamos chamar isso de widgets personalizados de slots
de inventário com taxa de eventos . Novamente, vamos copiar
esse nome porque precisamos
passar um para os clientes. Então, vamos fazer eventos personalizados e executá-los por meio do cliente. Lembre-se de clicar nele. Funciona com um cliente próprio
e confiável. E para o cliente ou
para o normal, temos que administrar o cliente. Lembre-se de que são os
widgets de caça-níqueis, não a categoria. Então, selecionando os widgets do slot. Então, o que queremos fazer
com esses widgets, se voltarmos à interface do usuário e
clicarmos no inventário. Então, lembre-se de que,
para o inventário, criamos essa grade de variáveis
de inventário. Então, para esse inventário de grade, o que precisamos fazer novamente, você precisa clicar
aqui é uma variável caso contrário, não podemos usar essa variável. Então, se eu não fizer isso,
clique em é variável. Você pode ver aqui se eu obtenho
meu inventário e, como uma grade, simplesmente não
podemos
ver essa variável. Mas se eu for aqui e clicar na variável
S para esse inventário de
grade, agora
posso arrastar
daqui e dizer grade. E você pode vê-la como uma variável e podemos
usá-la como antes. Vamos limpar as
crianças e garantir que não
haja
espaços de inventário dentro
delas toda vez que aludirmos um item posteriormente ou o
retirarmos do inventário Precisamos redesenhar todos
os espaços para atualizar
o inventário. Temos que
garantir que os antigos estejam limpos antes de
adicionarmos os novos. Então, vamos limpar as crianças e garantir que estejam vazias e limpas. Agora vamos fazer um loop. Então, saia daqui
e diga para loop, e selecione este. Então, novamente, lembre-se de
que, quanto à quantidade de vagas, já
temos uma variável
no inventário. Então, se voltarmos ao componente de
inventário aqui, criamos esse
chamado quantidade de slots. Precisamos de uma referência
para esse inventário. Então, aqui em cima, vou
clicar no sinal de adição e depois encontrar minha variável de
inventário do AAC. E vamos chamá-lo de inventário. E então vamos fazer a
mesma coisa aqui embaixo. Deixe-me clicar no Plus,
selecionar a variável de inventário AAC e chamá-la de inventário. Então, agora o que podemos fazer
é conectá-lo aqui. E para este, crie widgets de slots de inventário. Vamos até o player e
clicar no player DP. E dentro dele, novamente, vamos executá-lo
no Begin Play. Podemos extraí-lo aqui
do controlador, assim como antes do que fazíamos com
as categorias de inventário. Então, vamos sair
daqui e dizer para criar widgets de slots de inventário. Então, selecionando este aqui e precisamos inserir
o inventário. Lembre-se de que você pode
simplesmente arrastar a partir daqui porque você já
tem o inventário. E você também definiu quantos slots você tem
em seu inventário. Então agora você pode ter esse número, esse 16 aqui que escrevemos. Então, se voltarmos
ao controle do player, precisaremos repeti-lo
quantas vezes você escreveu aqui
para a quantidade de slots, porque essa é a quantidade
de slots que queremos criar. Então, arrastando daqui e dizendo a quantidade de vagas, essa aqui. Agora, para loops, eles partem do índice de zero e não de um. Se simplesmente os conectarmos aqui, isso criará 17 espaços de
inventário e não 16. Temos que pegar
esse e dizer menos. Então, subtraia e
subtraia por um
e, em seguida, conecte-o
ao último índice. Então, o que vamos
fazer 16 vezes? Vamos simplesmente
criar widgets. E o que você deseja criar, queremos criar slots de inventário
WB. E, como uma
coisa boa mais tarde, precisamos ter o índice do slot. Então, vamos voltar para a interface
do usuário e abrir
o espaço de inventário. Vou acessar
o gráfico e criar uma nova variável
chamada índice de slots
e, em seguida, selecionar o
número inteiro e compilar. E, assim como
antes, vamos selecionar a instância editável
e expor no spawn. Volte para o
controlador do player como registrado e atualize todos os nós. Agora podemos pegar isso e inserir isso no índice do slot. É sempre bom ter esse índice porque,
mais tarde, você pode precisar dele quando estiver programando e de um slot específico. Tudo bem, então, como a
última coisa agora, assim como antes de
criarmos o widget, agora precisamos adicioná-lo
à grade que temos. Então, pegando isso aqui, o inventário WB e, em seguida,
a variável de inventário da grade. E agora vamos arrastar
daqui e dizer Adicionar criança à grade
e menos conectada. Então, para a grade, temos as
linhas e as colunas aqui. Agora, antes de fazermos isso, o conteúdo que queremos adicionar é simplesmente esse widget
que acabamos de criar. E você pode clicar duas vezes aqui novamente para criar um nó de redirecionamento. Agora, para as linhas
e as colunas, é muito, muito simples. Você pode arrastar daqui
e dizer dividido por quatro. Porque o que eu quero que você
faça é que o inventário tenha quatro vagas
à força, muitas perdas
florestais em quatro vagas. E isso é o que você pode fazer. Portanto, temos 16 slots
divididos por quatro, o
que nos dará
quatro na coluna. E também dividido por quatro
não é dividido, mas módulo quatro e então nos
dará quatro por quatro. Então, se arrastarmos
daqui novamente e
dissermos módulo e selecionarmos isso aqui, e depois quatro novamente. Agora podemos pegar isso e
conectá-lo à linha, pegar isso e
conectá-lo à coluna. Portanto, você sempre pode
alterar esses números. É porque eu quero ter
meus slots quatro por quatro. Mas talvez você queira que seus slides tenham oito
por oito para poder alterar esses números
dependendo da aparência do seu inventário
. Agora vamos clicar em
compilar e vamos clicar em uma forma de
ver o que acontece. Se eu clicar em, posso ver meu inventário está sendo
adicionado à minha tela. Então, isso é o que parece. É muito grande agora, e eu preciso reduzir o tamanho. Mas, na verdade, vamos remover todos
os ícones para
começar por padrão, porque eu não quero ver todos
os ícones aparecendo como padrão. Então, vou clicar
no compartimento do inventário, voltar para o designer. E aqui você pode
clicar no ícone e ir até aqui na
visibilidade e configurá-lo como oculto. A mesma coisa com o
número, clique nele, volte para a visibilidade e também defina este como oculto. Agora, se eu clicar em Jogar novamente e clicar no olho, você verá que tudo está oculto e é melhor
assim, porque podemos mostrar os ícones mais tarde
, se realmente tivermos um item e não esse ícone
padrão para o tamanho, ele pode parecer ideal para você. Se eu voltar aqui, você pode ver aqui que estou
projetando em 12 80 por 720. Então, esta é minha tela de
design padrão aqui. É para isso que eu o estou
projetando. Pessoas com monitores menores verão isso normalmente assim. Você pode ver que não
é, não é enorme assim. Se eu clicar em jogar
e clicar aqui, você pode ver que é muito grande aqui. E realmente não
parece assim por aqui. Isso ocorre porque temos
algo chamado escala de DPI. Agora estou trabalhando
nesta resolução. No entanto, se você clicar aqui porque eu tenho um
garfo, um monitor, acho que algo em
torno de 3.000 aqui, 3.800. Então, clicando neste pequeno ícone, você pode ver aqui que ele está ampliando minha interface de usuário, dependendo
da minha tela. Então, agora eu estou projetando
isso para uma tela aqui. Na verdade, esse aqui. No entanto, minha tela está
em algum lugar por aqui. Então, na verdade, você
pode ver que a escala é para realmente escalá-la
quatro vezes ou 3,5 vezes. O que você pode fazer é simplesmente selecionar essa e depois reduzir a escala para que
ela não seja tão escalável. Clicar aqui e apenas
configurá-lo como dois, por exemplo, e isso é somente se
acontecer com você. Portanto, geralmente é quando
você deseja redimensionar a interface de dois monitores diferentes e fazer com que pareçam bons
para monitores diferentes. Pode ser 2,5 e o
tamanho clicando em Jogar, eu posso clicar no olho. Você pode ver que é muito menor agora e eu gosto
mais desse jeito. Tudo bem, agora adicionamos
os slots de inventário. Vamos salvar tudo
e seguir em frente.
33. 5.08 Set Select Inventory Categoria: Precisamos fazer agora
que, quando clicamos em um botão de categoria
para o inventário, ele precisa configurá-lo para
a categoria selecionada. Então, vamos prosseguir
com os planos e criar essa lógica dentro do componente de
inventário. Vamos até aqui e
criar novos eventos personalizados. E esta chamaremos de
definir a categoria de inventário selecionada. E, novamente, estamos
trabalhando com a interface do usuário. Então, vou
copiar isso e criar um novo evento personalizado e
executá-lo por meio do cliente. Então, funcionando, possuindo
clientes e confiável. Então, o que precisamos
fazer aqui para essa categoria
de inventário selecionada? Lembre-se de que fizemos
essa enumeração, a categoria de item E, conjunto, a categoria de
estoque selecionada. Vamos arrastá-lo daqui. E enquanto segura a tecla Alt, você pode soltá-la e ela
automaticamente fica assim. Então, estamos simplesmente definindo essa variável e eu vou
arrastá-la e
soltá-la no evento. Isso
criará automaticamente uma entrada aqui. Você pode criá-lo manualmente
ou simplesmente clicar, arrastar
e soltar. E isso o criará para você. Agora vamos chamar o
cliente de “
Definir categoria de inventário selecionada”. Vou clicar e
arrastar isso novamente aqui, para que ele execute todo
o processo. Agora, precisamos realizar
esse evento sempre que
clicarmos em um botão
ou nas categorias. Então, vamos voltar à interface
do usuário e clicar
na categoria de inventário. Agora, vamos clicar nesse botão, categoria
do botão,
e deixe-me descer. E depois no evento OnClick. Então, o que deve acontecer
quando eu clico nesse botão? Eu simplesmente quero chamar esse conjunto de categoria de
inventário selecionada. Então, como podemos conseguir esse evento? Estamos dentro
do inventário e agora
estamos dentro da interface do usuário. Isso pode ser uma prática
para você tentar descobrir como você
realmente chega lá, como chegar a esse inventário. Agora, vamos fazer isso juntos para que você possa fazer uma pausa se
quiser fazer isso sozinho. Então, aqui, o que queremos fazer
é que haja uma função na qual você possa obter a camada
que possui essa interface de usuário. Portanto, toda interface de usuário gerada para um jogador é
de propriedade do jogador. Então, agora, podemos
clicar com o botão direito do mouse e dizer Get Owning layer on. Então, ele está tentando encontrar a
camada que possui essa interface de usuário. E aqui, na verdade, precisamos de
uma referência ao jogador, mas ainda não fizemos uma. Lembre-se dos planos
quando acessamos as interfaces. Aqui temos apenas
uma interface para o controlador, onde temos o controle de camada get,
nossa referência. Então, na verdade, também precisamos fazer
um para o jogador. Então, vou voltar
aqui para as interfaces,
clique com o botão direito do mouse em Blueprint,
Blueprint Interface. Vamos chamá-lo de int layer.
Clique duas vezes nele. E aqui
para a função, vamos chamá-la de referência de
camada de get. E agora, aqui embaixo, lembre-se de que você precisa selecionar a variável à qual
deseja se referir. Então, eu quero fazer referência
à camada BP, e vamos chamá-la de
camada aqui embaixo. Vamos compilar. Lembre-se, é muito
importante compilar aqui. Agora vamos até o player
e adicionar a interface. Então, bp player. Os padrões da classe são,
na verdade, as configurações da classe. E aqui, para as interfaces, vamos clicar nela e
pesquisar a compilação da camada int. E agora você verá aqui nas interfaces obter
a referência de Blair. Assim como antes, precisamos
definir quem é o jogador. Estamos dentro
dos jogadores B2B. Então você pode apenas
tentar, pode dizer a si mesmo. Portanto, essa é a referência do layout. Ok, agora temos
isso e agora podemos voltar à nossa interface de usuário de categoria de
inventário. Então, adquira o peão do jogador proprietário. Agora diz: de
qual jogador você está
falando especificamente? Estou falando especificamente
sobre o bp player. Então, podemos dizer que agora obtém referência
do jogador
que acabamos de fazer. E é uma mensagem porque é
de uma interface Blueprint. Agora temos a referência do
jogador
e agora, como jogador, agora
podemos obter o
inventário porque todo
o processo aqui
era obter o inventário. Assim, podemos chamar a categoria de
inventário selecionada. Então,
aqui na interface do usuário da categoria de inventário, vamos arrastar daqui
e dizer AAC, inventário. E vamos descer e
encontrar a variável. As variáveis estão
sempre no final aqui. Agora, como inventário, podemos chamar definir a categoria de inventário selecionada. E qual é a categoria? Quer configurá-lo como? Lembre-se de que, no controle
do player ,
se eu voltar agora, será um pouco confuso
agora, porque estamos indo e voltando o que estou tentando explicar da melhor maneira
possível. Lembre-se, no controlador
do player quando criamos as categorias para cada um dos nomes de linha
aqui em nossa tabela de dados. Pegamos a categoria
e a inserimos no botão criado aqui. Então aqui no botão ele já sabe qual é
a categoria. Então você pode simplesmente
clicar e arrastar isso e conectá-lo aqui. Portanto, cada botão
terá sua própria categoria, na qual ele fará login aqui. E as informações corretas
serão definidas aqui. Ok, então é muito importante. Toda vez que
definimos a categoria, queremos redesenhar
todos esses botões. Então, aqui nos slots de inventário, queremos redesenhar todos
esses slots porque
estamos mudando de categoria. Portanto, não queremos ver os slots antigos
da categoria antiga. Agora, o que precisamos fazer, e
é por isso
que declaramos filhos, porque queremos remover
os botões antigos ou
os compartimentos de inventário antigos
antes de adicionar os novos. Ótimos widgets de slots de inventário. Temos que chamá-lo no ano que definimos a categoria
inteira selecionada. E agora precisamos de uma referência ao controlador
do jogador desse inventário. Então, como fazemos isso? Do jeito que fazemos isso primeiro, precisamos pegar o jogador. Portanto, não podemos realmente obter o controlador do player
diretamente desse componente. Mas lembre-se, esse componente
está dentro do player. Então, o que podemos fazer é clicar com o botão direito do mouse e
dizer, o proprietário, que
ficará com o jogador. E, novamente, assim como antes de termos que dizer isso especificamente, somos onerosos ou do que
estamos falando. Estamos falando
especificamente sobre esse tocador de bp. Então, podemos dizer que obtém a
referência de camada que acabamos de criar. E agora podemos conectar esse. E aqui podemos obter
o controlador. Então você pode rastrear aqui
e dizer Get Controller. No entanto, você pode dizer get
controller e então você pode dizer Get layer, a referência do
controlador. E dessa forma, você pode
realmente chamar a criação, criar espaços de inventário, widgets. Você pode fazer assim. No entanto, está ficando muito longo temos
que fazer isso
todas as vezes. Então, em vez disso, vamos
voltar para o jogador. E em vez de fazer
isso get controller, vamos realmente
criá-lo em uma variável. Então, aqui no início do jogo, vez de fazer isso, vamos pegar o controlador
e,
digamos, obter a referência do controlador de camada. E agora podemos clicar com o botão direito
aqui e promover isso para uma variável e
chamá-la de controlador de layout. Mas agora temos o
controlador do player e não precisamos fazer isso toda
vez dentro daqui. Então, quando tivermos o controle da
placa, vamos realmente excluir esse custo. Como agora temos essa interface
Blueprint, podemos excluí-la de vez em quando podemos simplesmente
conectá-la aqui em vez de
conectá-la. E vamos arrastar
tudo para mais perto. E agora esse controlador de fluxo também
pode ser usado aqui. Não precisamos chamar
esse controlador de jogador. Novamente. Vamos excluí-lo e
conectá-los aqui. Agora, o alvo aqui novamente é o controlador de
jogadores da plataforma. Então, vamos pegar essa
variável de controlador de layout que acabamos de criar. E vamos conectá-lo aqui. Em seguida, subimos aqui
e você pode ver que está muito mais limpo do que antes. Em vez de ligar para a referência
do controlador do player todas as vezes, podemos simplesmente fazer isso. Vou
organizá-lo um pouco melhor, para que não fique muito confuso aqui. Tudo bem, agora temos esse controlador e
está ótimo. E podemos realmente
fazer isso aqui também. Para torná-lo mais limpo, podemos pegar o controle
do player e login aqui. Na verdade, isso está errado. Então, vamos pegar aqui, basta chamá-lo aqui, e podemos
conectá-lo manualmente desta forma. E podemos excluir esse controlador
preto. Então, agora é muito mais
fácil ver isso. E deixe-me
aproximá-los. Portanto, o código é muito
mais limpo aqui. E se voltarmos ao inventário
do AAC,
agora, em vez de chamar isso, acabamos tendo a variável do controlador
do jogador. Então, isso é muito mais limpo. E podemos conectá-lo aqui e chamar os widgets de criação de espaço de
inventário. E o inventário, novamente, podemos pegar do jogador e chamar
a Variável
do inventário AAC, descer até o final, encontrar a Variável do inventário
e conectar aqui. Tudo bem, então isso está
realmente terminado agora. Então, aqui, quando estou no
jogo e clico no olho, é realmente impossível clicar no botão
porque, no
momento , não temos um mouse que você possa ver ou podemos
contornar isso. Nós realmente não temos um mouse. Então, vamos corrigir isso. No momento, recebo uma
caixa porque x é nove tentando ler a
propriedade e está falando sobre você obter um subsistema de nível
local, o contexto de mapeamento. Então, na verdade, temos que
voltar para o jogador aqui. O contexto do mapeamento não
gosta disso. Serão quatro. Na verdade, nós o configuramos
e conectamos. Vamos arrastar do
controlador dividido e dizer que é válido. Apenas certifique-se de que seja
válido antes de realmente ser executado. Esse código é válido. E se for válido, você pode seguir em frente
e executar o código. Agora você pode clicar duas vezes
nele para torná-lo mais agradável. E vamos clicar em Jogar e
ver se ele falha novamente. Correndo por aí. Se eu também executar o cliente, posso removê-lo e você pode ver que não temos mais o Box. Então, certifique-se de que seja
válido antes de fazermos isso. Tudo bem, então, para o mouse, vamos para o controle do player. Aqui nos padrões da classe. Você tem que mostrar o mouse, o cursor. Agora vamos clicar aqui
e clicar em Jogar. E agora você pode ver, eu posso ver o mouse e não
consigo mais olhar em volta. Realmente não é importante, pois este curso não é
sobre movimentos, então eu realmente não me importo, mas você pode segurar o mouse e virar o
jogador e olhar em volta. Mas não
é muito importante por enquanto, não se
preocupe com o
movimento ou com a correção. Vamos nos concentrar apenas
no inventário. Portanto, clicar no
inventário não funciona porque nós realmente
não o configuramos. Temos que consertar isso também. Quando passo o mouse sobre
os botões de categoria, também não
consigo
pressioná-los. Então, vamos ver o que está
acontecendo com isso. Então, vamos encerrar isso. Vamos voltar à categoria de
inventário e ir até o designer. Então, olhando para o botão, posso ver que ele está totalmente configurado para
quadrado azul. E isso está errado. Não, para o Hubbard, precisamos
mudá-lo para Hubbard. E para os oprimidos,
precisamos mudar para descansar. E lembre-se de copiar o tamanho da imagem porque
os botões foram alterados. Então, clique com o botão direito do mouse
aqui e clique com o botão esquerdo para colá-los
aqui para a imagem, apenas certificando-se de que a visibilidade não seja
testável, para que não bloqueie o botão. E agora, se
formos para o menu I, agora precisamos que esse botão funcione
também quando clicamos nele. Então, se eu descer aqui e
selecionar essa opção como curtida, ela precisa abrir o inventário. Então, se eu apenas compilar e
voltar para o player. Então, aqui, quando
abrimos o inventário, o que podemos fazer é criar outro evento personalizado
e vinculá-lo a aqui. Então funciona para o botão. Bem, vamos clicar com o botão direito
aqui e personalizar o evento
e, digamos, abrir o inventário. Conecte isso aqui. Então, isso só é acionado sempre que nosso botão está sendo
pressionado, abra o inventário. Então, vamos voltar à interface principal. E aqui está esse botão
novamente, como antes, clique com o botão direito do mouse e diga
Get Owning, camada. Então, estamos adquirindo
o jogador porque é
aqui que está nossa lógica
, seu jogador proprietário após referência de
camada. E agora vamos
conectá-los. E aqui agora podemos
dizer inventário aberto. Então, agora deve funcionar. Vamos compilar tudo. Vamos clicar em Jogar. E se eu clicar na interface
do usuário aqui, você pode ver que
o inventário é aberto. E se eu clicar no
olho, ele também abre. Então é, Oh, está
funcionando corretamente. E passar o mouse sobre os
botões também funciona. Agora você não pode ver
se estamos mudando categoria porque
não temos nenhum item. Então, é muito difícil de ver. Então, se você quiser
ver isso rapidamente, você pode acessar o controle do
jogador aqui onde você adiciona seus slots de
inventário. Um método muito bom para
ver as coisas é usar a string de impressão daqui
no loop ao
criar os widgets Vamos arrastar daqui
e salvar a string de aluguel. Agora, o que
queremos imprimir na tela, vamos imprimir todos os
widgets que estamos criando. Então, a partir daqui, conecte-se aqui, e ele criará
esse nome de exibição para obter. Então, ele mostrará o nome
de exibição desses widgets. Agora vamos clicar em jogar. E você pode ver que ele cria
os widgets para ambos os jogadores. Quando você clica em
AI e depois
em Categoria, cria widgets. Se você clicar em outro, verá que o número dos widgets aumenta
, mas estamos lembrando de
limpar as crianças. Portanto, não é porque
existem 79 deles gerados. Só esses são
gerados agora. Isso está funcionando corretamente. Toda vez que
clico em uma categoria, ela cria novos widgets. Então, a única coisa que precisamos agora é realmente trabalhar com
os itens também. Então, vamos compilar tudo, salvar tudo e
passar para a próxima lição.
34. 5.09 readicionar itens existentes para arrancar: Tudo bem, agora o que
queremos fazer é
adicionar itens existentes
ao inventário. Então, no momento,
não temos realmente nenhum item alusivo ou
algo parecido. Mas o que podemos fazer se acessarmos
o controle do jogador, agora, estamos apenas adicionando
os widgets do slot de inventário. Nós os estamos criando e depois os
adicionamos
a essa grade aqui. Mas quando trocamos, quando limpamos as
crianças, trocamos categorias e
redesenhamos os widgets dos slots. Também precisamos redesenhar
todos os itens,
então, exibindo os itens,
podemos fazer isso mesmo não
tenhamos itens
saqueados no momento. Então, antes de adicionarmos os widgets aqui às crianças ou
ao inventário da grade. Agora vamos pegar isso
e eu vou empurrar isso aqui apenas um pouco para que
possamos adicionar mais algumas
coisas aqui dentro. Então, o que queremos
fazer é apagar
o inventário. Então, se voltarmos
ao inventário, apenas como lembrete, vamos para o inventário de
componentes. Aqui criamos as
três categorias. Por isso, entrou na categoria de armas e é uma matriz do compartimento
do inventário. Portanto, se clicarmos no Plus,
você verá que ele consiste em um item e, em seguida, na
quantidade do item, no slot do inventário
e no índice. E se clicarmos no sinal de mais
novamente, teremos outro item. Então agora eu tenho dois itens. E sem mais nem menos. Portanto, dependendo
de todos os itens que
temos, precisamos desenhá-los
também aqui para não perdê-los durante
o redesenho aqui. Agora vamos primeiro pegar
todos esses três. Apague aqui. Então, vamos
sair do inventário. E, digamos, categoria de armas. Mais uma vez, diga Alimentos
ou categoria de alimentos. E vamos escrever a categoria
de poções. Então, agora temos todas
essas três categorias. Agora vamos arrastá-lo para cá. E o que queremos fazer é
arrastar de um e dizer conjuntos de elementos da matriz. Queremos definir o elemento da
matriz, queremos definir o índice
do item que
já está dentro daqui. E para fazer isso podemos simplesmente arrastar
daqui e dizer definir elementos da matriz, porque também
precisamos fazer isso para eles. Portanto, isso realmente depende da categoria de inventário
que
selecionamos. Apesar. selecionarmos a comida
, precisamos fazer
isso pela comida. Selecionamos uma das poções, então precisaríamos fazer
isso com as poções. Então, aqui, arraste novamente
do inventário e vamos obter a categoria selecionada, categoria de
inventário aqui. Agora, em vez de fazer aqui, deixe-me clicar em Alt e
clicar aqui para desconectá-lo. Então, deixe-me arrastar daqui e
usar um nó chamado Selecionar. Então, deixando este, então qual é a seleção, inicialmente
basta
selecionar uma opção. Portanto, depende do que
você conectou aqui. Se você conectar um número,
ele selecionará um número. Se você inserir, por exemplo essa enumeração,
você a conecta aqui, você pode ver que ela está selecionada entre os itens dentro
dessa enumeração. Então, vamos conectá-los. Então, as armas com as armas, comida e as poções. Então, isso vai funcionar aqui. Ele ocupará a categoria de inventário
selecionada. Ele vai dar
uma olhada em qual depende
esse valor. Aqui. Se você se lembrar, se você voltar para a categoria de inventário da
interface do usuário. E aqui, quando
clicamos na categoria, ela define a categoria e depois
redesenhamos. Aqui. Diz a categoria. E então redesenhamos todos esses widgets
de caça-níqueis. Portanto, dependendo dessa categoria
selecionada aqui no controlador do player, ela selecionará esse valor. Então, se você selecionou
a categoria de poções, ela pegará essa categoria de
poções e , em seguida, registrará essa
categoria de poções dentro daqui. No momento, é ótimo.
Eu não sei por quê. Está um pouco cheio de bugs. Deixe-me desconectá-lo aqui e conectá-lo novamente aqui. Então, funciona apenas para
ter essa cor. Ok, então, por exemplo, se
selecionarmos a categoria de alimentos, ela
pegará essa categoria de alimentos aqui e a removerá daqui. E agora é a categoria de alimentos. Então, qual é o item aqui? O item é que podemos simplesmente comprar, pegue este aqui e diga ainda. E podemos pegar um item
da matriz e selecionar
esse chamado cópia. Qual item queremos comprar? Qual item dentro dessa
matriz queremos obter? Simplesmente, queremos apenas
obter o índice do slot. Lembre-se de que estamos
examinando seus widgets de caça-níqueis. Estamos fazendo um loop de 0 a 15, então
criamos 16 slots. E para cada um desses slots, queremos obter o item
de cada um desses slots. E então queremos
colocá-los dentro daqui. Então, para o índice de slots, novamente, basta aqui
e adicione-o aqui. Então esse é o índice. Lembre-se de que ele vai
rodar 16 vezes. Então, ele vai definir o índice. Então, o primeiro será zero, depois um, depois 2345 e assim por diante, até 15, então ele cria 16. Agora, para o item, podemos pegar este item
aqui e dizer pausa. E agora, para essa matriz
aqui, esse slot de inventário. Mas podemos
derivar daqui e dizer criar um espaço de inventário. Então, arrastando esse item até aqui, vamos redefinir o item dentro dessa matriz. Não queremos perder nosso item. Portanto, dependendo do
slot que temos, por exemplo, o primeiro slot está no índice zero. Vamos pegar esse
item e conectá-lo aqui. Mesmo que esteja vazio
, não importa. Estamos apenas obtendo todas essas informações e
reconectando-as aqui. Também estamos pegando a
quantidade, inserindo-a
aqui apenas para garantir que não
percamos nenhuma informação. E para o espaço de inventário, lembre-se de que estamos criando espaços de
inventário, então eu vou arrastá-lo
aqui, faça o login aqui. E para o índice de slots, novamente, basta arrastar daqui
e conectá-lo aqui porque nós realmente não queremos
usar o slot de inventário antigo. Esse é o slot que
será limpo. Quando dizemos crianças claras, não
queremos
mais usar isso , assim como
o índice de slots, estamos limpando tudo aqui. Então, vamos usar o novo índice de
slots e, em seguida, fazer inventário do
widget de slots e apenas
esconder essas canetas, porque eu
não acho que elas pareçam boas. Você pode clicar nele e
clicar em Ocultar pinos desconectados, e ele ficará
muito melhor agora. E foi isso, na verdade. Então, vamos usar essa lógica aqui. Vamos adicionar novamente nossa interface de usuário
à grade aqui. E para isso, esses
são os widgets. Assim, você pode clicar e arrastar a partir deste e adicionar novamente
os widgets aqui. E tudo
parece perfeito. Agora, no momento, não podemos
realmente ver a diferença porque não estamos
realmente atualizando a interface do usuário. Portanto, nos
slots de inventário, não estávamos realmente definindo a imagem do item aqui
muito visível ou algo assim. Faremos isso
na próxima lição. Mas antes de fazermos isso, vamos organizar
tudo aqui. Então, vou seguir em frente e mostrarei
como eu o organizei. Ok. Então, muito rapidamente, fui em frente
e organizei tudo. Posso ver se eles estão
tendo todas as notas de redirecionamento, então certifique-se de
clicar duas vezes em todas elas. Você também pode selecionar alguns elementos e clicar em
Q no teclado. Isso endireitará
os elementos. Então, vou me certificar de
organizar seu código que você possa
entendê-lo melhor. Vamos compilar tudo por enquanto e passar
para a próxima lição.
35. 5.10 Mostrando um item no inventário: Ok, então vamos agora
atualizar a interface de usuário do slot de inventário. Quando perdemos um item. Aqui, para os espaços de inventário, vamos ao gráfico e
vamos excluir tudo aqui. Agora vamos criar um evento personalizado. E esta, vou
chamar de interface de usuário do slot de atualização de inventário. O que queremos fazer é
simplesmente definir essa imagem aqui dependendo do item que saqueamos e também da quantidade dele. Então, clicando aqui, vamos adicionar duas variáveis
diferentes. O primeiro é o item, assim como as informações do item. Esse é o item,
vamos chamá-lo de item. E a segunda é a
quantidade desse item. Vamos transformá-lo em um
número inteiro e compilar. Então, para este item aqui, vamos tirar da
quantidade e dizer, é igual a zero? Porque se o item
for igual a zero, significa que não há nenhum item
nesse espaço de inventário. Nós realmente não queremos exibir o ícone do item ou esse texto aqui, porque realmente não
temos um item nesse slot. Então, se a quantidade
for igual a zero, vamos pegar essa imagem
aqui e ilustrar
daqui e dizer que defina essa habilidade. E vamos definir a visibilidade como
oculta se não
tivermos nenhum item. E vamos fazer isso
também com o texto. E você pode ver que eu não tenho
uma variável para o texto. Vamos voltar ao Designer. Clique no texto e defina-o essa variável
para que
possamos vê-la como uma variável. Alice, agora pegue aquela mensagem, vamos ver se conseguimos encontrá-la. E eu não consigo encontrá-lo. E, na verdade, é chamado de quantidades de itens de
imagem. Deveria ser um texto. Então, vamos transformar isso em texto. Volte para o gráfico,
e é este. Então, vamos arrastá-lo até
aqui e dizer definir a
visibilidade como oculta também. Ok, então agora ambos
estão definidos como
ocultos se a quantidade for zero. No entanto, se a
quantidade não for zero, queremos definir essa imagem. Então, vamos pegar esse ícone
aqui, a imagem aqui. E digamos que defina o
pincel a partir da textura. E vamos definir esse ícone. Então, se for falso,
se na verdade, se não for zero, na verdade
temos um item lá. Vamos definir o ícone dessa
imagem aqui em nosso inventário. Então, qual é a imagem para isso? Lembre-se de que temos o item e vamos arrastar
daqui e dizer pausa. Então, eu posso ver as informações
sobre esse item aqui. E vamos arrastar essa miniatura. Temos a miniatura, então podemos usá-la como
liga de textura, pinos
não ocultos e desconectados se você quiser ocultar o resto
das informações. Agora lembre-se de definir a
visibilidade como visível, porque agora ela está oculta. Eu posso simplesmente copiar isso
aqui e conectá-lo. E agora podemos definir a
visibilidade não muito visível, mas para nenhum sucesso testável. Lembre-se de que, se você
o definir como muito visível
, estará bloqueando
esses slots de inventário. Você, se você definir como
nenhum, é testável. Isso significa que você não pode
interagir com esse ícone. E não acredito que
precisemos interagir com nada sobre esse ícone, então vou
configurá-lo como nenhum sucesso testável por enquanto. A mesma coisa para o texto. Precisamos definir a quantidade. Então, vamos pegar o texto aqui e arrastar e dizer texto definido. E vamos definir o texto
para o valor aqui. Então arraste esse
login de quantidade para aqui, e ele
criará automaticamente essa função de dois textos para você. Agora vamos clicar duas vezes
para
organizá-lo um pouco melhor. E agora, para esses textos, definimos a quantidade. Agora, no meu inventário, o que eu gosto de fazer é que,
se esse valor for um não quero
mostrar esse número, então ele ficará
oculto assim. No entanto, se a quantidade for dois, ele mostrará o número. Então, se for um, eu
realmente não quero mostrar
o número um. Agora vamos ver o gráfico aqui. E o que podemos
dizer é que podemos
arrastar a quantidade novamente e dizer que, se for maior que um,
queremos
exibir essa ramificação. Se for maior que um, então queremos pegar esse texto. Então, deixe-me copiar
isso aqui, o texto. E queremos dizer que
nenhum sucesso pode ser testado. Então, eu quero mostrar
esse texto se for, se o número for
maior que um, desse jeito. No entanto, se o número não for maior que um,
vamos copiar isso. Então eu quero colocar
este como oculto. Então, se tivermos apenas um item, ele não
exibirá esse texto. Se tivermos dois ou mais itens, ele exibirá esse
texto e pronto, na verdade. Então, deixe-me
clicar duas vezes e fazer com que isso pareça melhor também. Certifique-se de que seu
código esteja organizado. Pode ficar confuso muito rápido e levará muito tempo para você organizar tudo. Então foi isso. Vamos compilar. E agora temos que
chamar essa função. Nós realmente não o
guardamos em lugar nenhum. Então, agora vamos voltar ao controle
do player. Dentro do
controle do jogador, aqui estamos adicionando o item a essa matriz
e, em seguida,
adicionando as crianças. E agora também precisamos
atualizar a interface do usuário porque sim, o item está sendo adicionado. No entanto, não estamos vendo
nenhuma alteração porque
não estamos atualizando a interface do usuário aqui
, atualizamos a interface do usuário, estamos dentro do slot de inventário do
WB. Portanto, lembre-se de que no
controlador do player de cada um dos slots em que você está
criando esse widget, você está criando o slot de
inventário WB aqui. Então, podemos realmente usar isso. Podemos arrastar a partir desse espaço de
inventário e podemos dizer atualizações, interface de usuário do slot de inventário. Esse é o evento
que acabamos de criar. Agora vamos clicar duas vezes,
fazer anotações de redirecionamento. Vou levar isso
um pouco até aqui. Portanto, não está acima da minha função, não está dentro da minha
função, assim. E agora precisamos
conectar o item a quantidade e o item. Lembre-se, lembre-se de que você já disse isso aqui,
chegamos ao item. O item aqui, bloqueie-o, a quantidade
também, conecte-o. Vamos clicar duas vezes e
fazer com que pareça um pouco melhor. E assim,
vamos compilar e salvar. Agora não podemos realmente testá-lo com os itens porque não
temos um sistema de saque. Mas o que podemos
fazer é acessar os componentes
do inventário e entrar no inventário,
e apenas para pegar as armas, por exemplo você pode simplesmente clicar no
sinal de adição e adicionar um item aleatório. Aqui. Nos itens, vamos apenas
adicionar algo, por exemplo, isso, eu não conheço
essa alavanca aqui. E podemos dizer que isso realmente
não importa,
trabalho, seja o que for. E agora vamos definir
a quantidade para um. E o índice de
caça-níqueis, tudo o que é, realmente não importa. Então, lembre-se, apenas
certifique-se de ter o ícone e a quantidade. Então, vamos clicar em Jogar
e ver se isso funciona. Então, clicando no inventário, posso ver minha inteligência. Se eu mudar a categoria, você verá que eu posso vê-la. Eu volto para as armas. Eu posso ver meu cutelo. Então, isso está funcionando corretamente. Agora, também podemos
testá-lo aqui nas poções. Vamos adicionar uma poção. Vamos clicar no item. E agora vamos aqui, selecione uma das poções, por exemplo, poção dessa maneira,
defina a quantidade para cinco, por exemplo, que
possamos ver se
o texto aparece. E se clicarmos em Jogar, clique em AI e
clique nas poções. Você pode ver, eu posso ver
que tenho cinco quocientes. Se eu clicar nas armas, posso ver a comida da minha arma. Não temos comida. E agora você pode ver que
está funcionando corretamente. Ok, então vamos
excluir este que acabamos de criar, e as armas
e os quocientes. E agora vamos
compilar tudo, salvar tudo
e seguir em frente.
36. 6.01 Interagindo com os itens: Vamos agora começar a
interagir com os itens. Então, primeiro, vamos às
plantas e ao player. E vamos criar uma nova ação
de entrada na qual
podemos clicar em um botão
e carregar os itens. Então, vamos clicar com o botão direito do mouse, acessar
as entradas e a proteção. E vamos chamar isso de um saque
ou você pode chamá-lo de interação. Isso depende de você. Vamos aos contextos de
mapeamento. E dentro daqui, vamos clicar na nova
vantagem aqui nos mapeamentos. Vamos minimizar tudo
isso aqui
para o novo,
vamos adicionar o alaúde, alaúde. E eu vou pressionar aqui e pressionar meu
botão EE no teclado. Vou apenas usar o
IPA e os itens de soluto. E para o gatilho, clique no sinal de mais. E aqui, defina-o como
pressionado e pressionado, apenas certifique-se de que você não possa
enviar spam para este botão e. Então, se você
segurá-lo, ele não funciona o tempo todo. Então, pressionar significa apenas executá-lo
uma vez quando eu clico em E. Ok, então isso é feito aqui.
Agora vamos fechá-lo. Vá até o player. E aqui no player, deixe-me explicar um pouco isso
. E aqui embaixo, eu posso dizer que IA é muito grande e ter
esse evento aqui. Agora, o que podemos fazer é o que alude que precisamos para
executá-lo no servidor. Até agora, trabalhamos com um cliente porque
tudo isso era UI. Porém, ao
saquear itens, certifique-se de
executá-los no servidor, pois você deseja verificar se os clientes podem
realmente perder os itens. É assim que você
evita fraudes. Então, quando você joga aqui e
joga como servidor, então esse, esse
aqui é o servidor. Esse aqui é o cliente. Digamos que os clientes
sejam os clientes conectaram seus amigos
ao seu servidor. Eles vão pressionar E. Mesmo que não
haja itens aqui. Precisamos verificar. Quando você clica em E
aqui como cliente, essas informações
vão para o servidor. O servidor verifica se essa linha está
em um item ou não
e, em seguida, enviará
essas informações de volta
ao cliente no momento.
Não estou em nenhum item. Vou clicar em
E. Essa informação precisa ser enviada para o servidor. O servidor dirá: Não, você não está em cima de nenhum item, você não vai
perder nada. Mas essas informações
serão enviadas de volta ao cliente. Isso dirá ao cliente
que você não está usando nenhum item e eu não vou
perder nada aqui. Sempre pegando o código, verificando com este servidor e apenas certificando-se de que
os clientes não estão trapaceando e enviando
essas informações de volta para o cliente. Então, até agora,
trabalhamos com os clientes porque era interface de usuário, mas agora é
na verdade lógica do jogo. Então, aqui, em vez de apenas escrever o código
diretamente daqui, porque se você simplesmente escrever uma string de
impressão aqui, novamente, é muito bom escrever
uma string impressa para ver o que acontece se eu clicar em play. E aqui eu clico em e como
servidor, diz Olá. Se eu for até o
cliente e clicar em E como cliente, ele diz Olá. Assim, o cliente e o
servidor podem executar esse evento. Quero executar o código somente
pelo servidor, então não vou
escrever o código aqui. No entanto, vamos criar um novo evento personalizado
chamado server loot. E este vai rodar em
um servidor confiável. E então eu vou executar
o evento do servidor aqui em cima. Então, quando o cliente
curtir o E, ele também será executado
no servidor. Então, para os itens,
deixe-me colocar um item aqui. Então, para os itens, vamos colocar, sei lá, essa banana aqui,
algo aleatório. E vamos colocar esse cutelo. Vou colocá-los um
em cima do outro, para que isso me diga quantos
itens estou em cima. E eu vou colocar um
item sozinho aqui, assim como este, para
que possamos testá-lo. Então, o que podemos fazer aqui
para o saque é mouse e dizer
que está sobreposto. Atores, só estou procurando por quantos atores
estamos sobrepondo? E agora ele vai te perguntar: quais atores você
quer que sejam? Quero que seja a base de itens
que criamos anteriormente. Então, vamos pegar os atores
sobrepostos do GED quando você
estava de pé sobre os itens, para verificar quantos
atores estamos sobrepondo. Vou pegar isso
e dizer comprimento e depois perguntar se isso está acima de zero. Então, eu só quero executar esse
código sempre que estou
realmente em cima de um item, porque se o comprimento da atriz
sobreposta for zero, então não estamos em cima nada e eu não
quero executar meu código. Então, se estiver acima de zero, eu realmente quero executar meu código. É isso para este vídeo. Vamos clicar
na corda laranja aqui e ver se tudo
está funcionando corretamente. E o que eu
quero imprimir, vamos imprimir o
tamanho dos atores olímpicos, o que significa quantos atores
estamos realmente sobrepondo? Então, clicando na peça. E aqui como servidor, eu vou até esses
dois itens clicando no IE, você pode dizer que se chover também, eu estou na verdade
em dois itens agora, se eu entrar aqui e clicar em e, nada acontece
porque lembre-se que
só estamos imprimindo
quando está acima de zero. Se eu for até lá e silenciar isso aqui, diz um item,
então está funcionando corretamente. E se eu fizer isso também como
cliente, você pode ver que o servidor
imprime as informações, que é muito bom porque
só queremos executar esse código no servidor e
tudo está funcionando corretamente. Então, vamos deletar isso e continuar
no próximo vídeo.
37. 6.02 Adicionar inicial à lógica de inventário: Ok, então foi aqui que
paramos e agora vamos adicionar a lógica inicial
para adicionar o item. Então, vamos voltar
aos componentes
e ao interior do componente de
inventário. E aqui precisamos criar um evento personalizado chamado
adicionar ao inventário. Então, vamos clicar com o botão direito do mouse em
um evento personalizado para adicionar ao inventário. E este, podemos
percorrer o cliente porque
já o executamos no servidor e estamos interagindo
com um item. E agora vamos analisá-lo no cliente porque na verdade
é uma interface de usuário e precisamos adicionar o
ícone ao inventário. Adicione ao inventário executado
pelo cliente
e o servidor está executando o cliente proprietário,
desculpe e é confiável. Agora vamos analisá-lo até aqui. Cl, adicione ao inventário. E o que precisamos
adicionar é apenas o item. Então, clicando aqui, clicando no botão Mais, vamos encontrar a base do item como o tipo de variável
porque queremos
adicionar esse
item específico ou uma alusão. Agora podemos arrastar isso
e adicioná-lo aqui também. E vamos compilar. E
agora, para o jogador, agora
podemos pegar esse
inventário e dizer adicionar ao inventário,
assim. E de qual item
estamos falando? Estamos falando sobre esse item específico
que estamos sobrepondo. Então, vamos arrastar aqui,
criar algum espaço. Agora, o que queremos aludir é que
você pode fazer isso com dois métodos, você pode fazer isso com dois métodos dependendo do jogo que
você está criando. Então, aqui, quando você clica em
E e quer perder um item, você pode saquear todos os itens de uma vez. Você pode fazer isso assim. Então você pode pegar aqui
e dizer Para cada loop, e você pode, para
cada um desses itens, adicioná-los
ao inventário. No entanto, para o meu jogo, eu só quero saquear
um item por vez. Então, vou sair
daqui e dizer que obtém uma cópia. Então, eu não vou repetir isso. Eu só vou
pegar o primeiro item. Não precisamos de um plugin aqui. Então, vou pegar o primeiro item com o qual estamos
sobrepondo
e depois adicioná-lo ao inventário. Então, pegando esse item aqui, agora, não
podemos realmente
conectá-lo diretamente porque este é
um objeto ator. E se o conectarmos aqui, não
funcionará
porque este é
uma referência de objeto base de item da BP. Então, duas coisas diferentes. Então, agora sabemos que
isso é baseado em itens. Nós, nós fizemos isso aqui
no filtro. Filtramos que a
única coisa com a qual
interagiremos aqui é com
base no item para ouvir. E eles entendem,
podemos arrastar a partir daqui, e podemos obter a referência do
item. Agora, novamente, criamos apenas interfaces para o player e
para o controlador do player. Então, vamos fazer um novo. Vamos clicar com o botão direito do mouse em blueprints
e em Blueprint Interface. Vamos fazer um para
a base do item. E aqui vamos
clicar duas vezes e, para a função, obter a referência
do item. E agora estão as saídas. Lembre-se de que aqui você escreve o plano ao
qual deseja se referir. Quero fazer referência
à minha base de itens e vou chamá-la de item. Agora vamos até a
base do item e adicionar essa interface. Vá para itens, itens baseados aqui
nas Configurações da Classe e aqui na base do item da interface compile aqui
na interface, clique duas vezes aqui
e defina
a referência como autorreferência porque
estamos dentro da base do item. Agora vamos voltar para o jogador. E aqui podemos arrastar agora
e dizer obter referência do item. Agora temos essa
referência de item e agora podemos
conectá-la aqui e
adicioná-la ao inventário. Vamos
juntá-los aqui, fazer com que pareça um pouco melhor,
algo assim aqui, você
pode até mesmo clicar duas vezes aqui e fazer com que fique assim. Estamos recebendo o primeiro item
, sobrepondo a largura e obtendo essa referência e depois adicionando-o ao inventário novamente, se você quiser saquear cada item em
que está com apenas um clique. Você tem que pegar isso,
digamos, para cada loop. E então, para cada loop,
obtenha a referência do item. E então você pode conectar
cada um aqui. Então, vai
passar por isso até que
não haja mais itens para saquear e
depois vai parar. Então, eu só quero saquear
um item por vez. Estou satisfeito com isso, com tudo, e deixe-me
voltar ao inventário agora. Então, aqui, agora temos
um item ao qual estamos nos referindo. Então, se você clicar em Imprimir
e se conectar aqui, conecte
isso com isso aqui. Então você pode
realmente ver o que, o que está acontecendo. Então,
vamos clicar em Jogar. Agora. Aqui está o servidor. Eu vou fazer isso aqui, como em E e
vai dizer carne. Então, ele sabe qual
item está perdendo. Estou agora com dois itens, ele vai perder. O primeiro está
sobreposto com. Se eu clicar nele,
vai dizer Cleaver. Se eu for até aqui para o lado e só interagir
com a banana, vai dizer banana. Incrível. Então, tudo está funcionando. Então, aqui o que eu quero fazer é clicar com o botão direito do mouse e
promover isso para uma variável e
chamá-la de item para adicionar. E para este, eu também quero obter as informações do item e
transformá-las em uma variável. Haverá muito
mais limpeza para nós mais tarde. Portanto, lembre-se de que
obtivemos informações do item,
mas precisamos de um nome. E lembre-se novamente,
na base do item, já
criamos esse
nome de item, essa variável aqui. E quando fizemos isso na base
do item ou
de cada uma dessas crianças solteiras, tivemos que escrever o nome do
item aqui. Então, se eu abrir
normalmente assim, lembre-se de que quando você
cria uma variável
na classe de projeto principal, baseada em itens, todos os filhos herdarão essa variável. E agora você pode inserir aqui os padrões da classe e colocar os nomes de todos eles aqui. Então, na verdade, já
temos esse nome. Então, vamos para o componente de
inventário. E agora vamos derivar
do item e obter
a variável do nome do item. E agora podemos
conectá-lo aqui e obter as informações desse item. Só para este,
vou
clicar com o botão direito do mouse em promover
uma variável e chamá-la de item para adicionar informações. Então, temos as informações
do item que queremos adicionar, e foi isso por enquanto. Então, vamos compilar tudo e passar
para a próxima lição.
38. 6.03 Adicionando item ao inventário: Ok, agora precisamos de alguma lógica para adicionar o item
ao inventário. Então, aqui fizemos esse
acréscimo ao inventário. Depois desta lição,
verificaremos
se esse item é
empilhável ou não. Se não for empilhável, criaremos
uma nova pilha
no inventário e adicionaremos esse item. Se o item for empilhável, vamos verificar
se já temos esse item no inventário
e adicioná-lo à pilha. Se não, vamos
fazer uma nova pilha. Vamos fazer isso e
o próximo, no entanto, por apenas dois, vamos
entrar em um fluxo melhor. Precisamos criar uma função primeiro antes de podermos
fazer tudo isso. Então, vamos criar uma
nova função aqui, chamá-la de adicionar item ao inventário. Então, esta função
aqui é a etapa final. Então, quando criamos uma nova pilha, ou encontramos uma
pilha parcial e adicionamos esse item, essa função
será implementada. Então, digamos que criamos uma
nova pilha com sucesso. Em seguida,
adicionaremos esse item ao inventário depois de
criarmos uma nova pilha. Portanto, essa é a etapa final. Vamos fazer isso antes
de fazer todo o resto, porque isso tornará
as coisas muito mais fáceis. Vamos adicionar o inventário
do Item dois. Aqui, para a entrada, vamos fazer uma referência às informações do item. Portanto, o item que queremos adicionar e também a
quantidade do item. Então isso é um número inteiro e
vamos chamá-lo de quantidade. E lembre-se de que,
para os itens,
também temos os slots de inventário. Então, se voltarmos para
o controle do jogador e aqui, para cada item, também
temos o ISM, temos a quantidade do item, também
temos o slot do inventário e o índice do inventário, então podemos usá-lo aqui também. Então, vamos voltar ao
componente aqui e quatro aqui. Vamos alterá-lo para slots de
inventário. Vamos selecionar essa referência do Widget
Blueprint e chamá-la de slots de inventário. E esse, vamos
chamá-lo de índice de slots. E também estou fazendo um novo. E precisamos saber a
qual inventário o
estamos adicionando? Estamos adicionando isso
à categoria de armas? Estamos adicionando-o a essa categoria de alimentos ou a
essa categoria de poções? Então, vamos fazer
um novo aqui também. E vamos procurar por espaços de
inventário. Porque esses são os tipos de estruturas de slots de
inventário. Então, espaço de inventário, vamos
transformá-lo em uma matriz, e vamos chamá-lo de inventário
único. Portanto, depende da
categoria de inventário em que estamos. Queremos adicionar esse item
dentro dessa categoria. Ok, então vamos fazer
esse inventário agora e definir o elemento da matriz. Agora, fora dessa função, será decidido a qual dessas três ela
será adicionada. Vamos pegar
essas informações e definir o elemento da matriz. Agora, qual é o índice? O índice é simplesmente
esse índice de slots. Muito simples. Agora, para
este item, novamente, como antes, vamos
pegar isso e escrever make. Agora, para este item, queremos adicioná-lo aqui. Queremos adicionar essa quantidade, queremos adicionar esse espaço de
inventário e queremos adicionar
esse índice de slots. Portanto, esse é o item que
estamos adicionando ao inventário. E, na verdade, é
tão simples quanto isso, essa função está concluída. Há um detalhe muito
pequeno. E imagine se já estivéssemos
dentro dessa categoria. Então, digamos que eu esteja saqueando uma arma, estou
carregando tudo que acontece. E eu já estou dentro disso. Como se eu já tivesse minhas
categorias de inventário de armas selecionadas. Então, quando eu carrego uma arma, ela deve
atualizar instantaneamente meu inventário. Então, eu posso realmente ver que coloquei a arma aqui
apenas para
ter certeza de que
o inventário foi atualizado. Então, o inventário em
que eu já estou,
então, se eu perder uma arma e já estiver dentro
da categoria de armas, queremos ter certeza de
que a interface do usuário esteja atualizada eu
possa ver essa mudança na interface. Então,
o que queremos fazer pegar esse item
e vamos explicar isso aqui. E eu quero pegar a categoria desse item que estou carregando. Agora eu quero ver
se esse item que estou carregando tem a
mesma categoria que eu selecionei. Aparentemente. Se tiver, quero atualizar a interface do usuário. Caso contrário, não
quero atualizar a interface do usuário. E a razão pela qual eu
não quero atualizar a interface é porque, lembre-se, se eu simplesmente colocar essa comida aqui e ela for
carregada aqui,
eu selecionei
a categoria de armas. Nós realmente não precisamos atualizar essa interface de usuário porque ela
foi adicionada
à comida e eu estou
dentro das armas , então não precisamos realmente
atualizar nada agora. Lembre-se de que, ao
clicar em novas categorias aqui, atualizarão automaticamente todos os slots que
já estamos atualizando quando clicamos nas categorias de inventário.
No entanto, só queremos
atualizar se já estivermos dentro dessa
categoria, pois ela
não está sendo atualizada
em nenhum lugar instantaneamente. Então, aqui vou verificar se essa
categoria de item aludida é igual aqui, igual a enum, se é igual
à categoria selecionada
que eu tenho agora. E se for, vamos
pegar uma filial aqui. Se for igual, lembre-se de que, no widget do slot de
inventário, criamos nosso telefone, criamos nosso evento chamado
atualizações, interface do usuário do slot de inventário. E o item
que temos que conectá-lo, ou seja, esse item
e essa quantidade. Então, agora ele vai atualizar essa interface de usuário sempre que eu carregar meu item. Então, se eu já estiver dentro
dessa categoria selecionada e esse item for
adicionado à categoria de
inventário selecionada. Ele
atualizará instantaneamente minha interface de usuário para que eu
possa realmente ver
a mudança, certo? Agora eu criei
alguns nós de redirecionamento e isso é o que parece, um pouco mais organizado,
organize-os antes, apenas certifique-se de que seu
código esteja mais organizado. E agora, quando você estiver
satisfeito com o resultado, vamos agora compilar, salvar tudo
e seguir em frente.
40. 6.05 Encontrando uma pilha parcial: Tudo bem, bem-vindo de volta.
Agora vamos para a segunda parte, onde
vamos criar uma macro para encontrar uma pilha parcial que já
existe no inventário. Até agora, o que
fizemos foi
tentar ver se o item é
empilhável ou maluco. E se não for empilhável, estamos criando uma nova
pilha e
adicionando esse item
ao inventário. Agora, se o item for empilhável, vamos tentar descobrir
no inventário se
já temos esse item. Agora, o que podemos fazer
como antes aqui, onde temos o inventário. Na verdade, vamos
copiar tudo isso aqui. E eu vou copiar
esse loop também. Basta copiar isso,
voltar e colar. Então, basicamente, assim como antes, vamos usar essa
categoria para este item. Em seguida, vamos
selecionar a categoria. Porque, dependendo da
categoria do item, queremos dar uma olhada
nesse inventário específico, por exemplo, se estivermos fazendo alusão a uma poção, selecionaremos
a poção e percorreremos o inventário em busca
das poções para ver se
já temos o
item que estamos carregando. Então, se isso for verdade, vamos nos conectar aqui
ao plano de execução e para descobrir se temos esse
item específico ao qual estamos nos referindo, podemos derivar
disso e quebrá-lo. E aqui neste item, vamos quebrá-lo novamente. E lembre-se que aqui temos
um nome para o item. Então, vou arrastar
daqui e dizer igual e selecionar este para que
o texto seja igual exatamente. Agora, se o nome for exatamente igual a esse
nome do item, inclusive, eu
vou pegar isso, dividir isso também e conectar o nome aqui. Esconda também
os pinos não conectados deste. E vamos fazer um galho também. Então, agora o que estamos fazendo é
vasculhar
o inventário, por exemplo, poções. Então, para
carregar uma poção e, em seguida, para cada
item dentro dela, estamos verificando se esse nome existe para o item. Estamos fazendo alusão. Se
o nome existir, isso significa que o item
já está no inventário e encontramos uma pilha
parcial aqui. A segunda coisa que precisamos fazer
é ter certeza de que
agora estamos apenas verificando se
o item está no inventário. Mas e se o item
já tiver atingido o tamanho
máximo da pilha? Então, por exemplo, poções,
digamos que eu possa perder cinco poções de saúde. E se? E se, sim, eu tiver o
item em meu inventário, então encontrei uma pilha parcial. No entanto, eu já tenho uma pilha
completa sobre isso, sobre aquele cambaleador que eu tenho. Digamos que não apenas
verifique o nome, mas também verifique o valor que
temos no inventário. Então, aqui, vamos
clicar nesse item e mostrar a quantidade de itens desse
item dentro do nosso inventário. E a
quantidade desse item precisa ser menor do que o
tamanho máximo da pilha desse item aqui. Então, vamos mostrar o tamanho do Max Stack e conectá-lo aqui. Portanto, para encontrar uma
pilha parcial no inventário, ela precisa ter
exatamente o
mesmo nome do item dentro
do nosso estoque. E o item dentro do nosso
estoque precisa ser menor que o
tamanho máximo da pilha do item. Caso contrário, precisamos encontrar
uma nova pilha e adicionar edição a um novo espaço de
inventário. Vamos clicar aqui,
apenas oculte os pinos
conectados a
este também. Aqui, vamos arrastar e
dizer end Boolean. Então, usamos esse e o booleano. Portanto, se o nome for
exatamente
o mesmo e a quantidade for
menor que o tamanho máximo da pilha, podemos dizer que encontramos
uma pilha parcial. Então, vamos criar um novo booleano. E esse que eu vou
chamar tem que criar uma pilha. Vou definir isso como
falso aqui porque agora
encontramos uma pilha parcial
e a quantidade, não é
a quantidade, não é maior do que o tamanho máximo da pilha. É menor do que
o tamanho máximo da pilha, o que significa que podemos realmente adicionar itens no topo da pilha. Portanto, ele precisa criar uma
pilha definida como falsa e podemos prosseguir
e editar o item. Então, antes de fazer isso,
assim como antes, vamos selecionar tudo isso aqui. Vamos clicar com o botão direito do mouse e
transformá-lo em uma macro. E essa macro,
chamaremos de encontrar pilha
parcial, como esta aqui. E para a saída novamente, preciso adicionar um item de inventário. Então, arrastando este ano. Então, para a saída, eu
preciso de tudo isso. Novamente, assim como fiz
com a nova pilha de criação. Então, vamos clicar
em Encontrar pilha parcial. Vamos adicionar algumas
variáveis aqui. O primeiro está balanceado, então encontramos um item e este
é um pino de execução aqui. E vamos deixar
isso de lado por enquanto. Então, item encontrado aqui
na pilha parcial, novamente, como
antes, item a ser adicionado. E então temos a quantidade. Para adicionar,
temos o índice do slot e o último aqui
temos a variável de inventário. O primeiro item é a informação do item. Esse é o item que queremos adicionar. Essa quantidade é
apenas um número inteiro. O índice do slot também é apenas
um número inteiro. E o compartimento do inventário,
na verdade, esqueci de adicionar. Deixe-me adicionar o slot de inventário, que é o
Widget Blueprint. Portanto, faça o inventário dos slots e
a seleção desses planos de widget. Colocando aqui,
vou
colocá-lo acima do índice do slot aqui. O inventário são os slots de
inventário e,
em seguida, selecione-o como uma matriz. E este, vou
citar como não encontrado. Então, se não encontrarmos um item, e esta é uma caneta de execução. E também quero fazer
um novo loop completo, como
antes, com o qual
podemos fazer algo aqui. Portanto, o loop é concluído, não encontrado. Vamos compilar e
salvar tudo. Tudo bem, então vamos voltar
aqui e
reorganizar um
pouco as coisas dentro dessa macro. Então isso é o que você tem até agora. E se não precisarmos
criar uma pilha, podemos adicionar
isso ao inventário. Então, o que queremos adicionar? O que queremos acrescentar? Este item está aqui, item, item para adicionar informações. Vamos copiar
e colar aqui, a quantidade do item. Vamos arrastar esse item para adicionar
como antes e dizer quantidade. Pegue isso, obtenha a
quantidade do item e adicione-o aqui. Para o slot de inventário. Temos esse inventário
aqui para que possamos usar o
slot e o índice do inventário. Vamos arrastá-los
para aqui também. Então temos o
inventário novamente. É esse aqui. Vamos arrastá-lo e conectá-lo. Ok, então aqui estamos verificando se a quantidade de itens
no inventário é
menor do que o tamanho máximo da pilha para o item saqueado ou para
o item mencionado aqui. E se for, encontramos um item e não
precisamos criar uma pilha. Então, deixe-me sair aqui agora,
antes de fazermos qualquer coisa aqui, deixe-me adicionar outra
lógica para ter certeza. Então, aqui, agora, há algo que
não estamos verificando. Se eu pegar essa quantidade para adicionar o item e precisar perguntar, ela
é menor ou
igual ao ano? Deixe-me pegar o
item para adicionar informações, dividi-las e obter o tamanho máximo da
pilha conectada aqui. Agora, antes de verificarmos
o item do inventário, agora, estou verificando a quantidade que estou
aprendendo agora. É mais do que eu posso colocar
dentro dessa pilha? Ou posso colocar toda essa quantidade na pilha
que acabei de encontrar? Então, apenas
me certificando de que não vou
criar outra pilha aqui. Então, deixe-me conectá-lo. Portanto, se essa quantidade a ser adicionada for menor ou igual
ao tamanho máximo da pilha, não criaremos nenhuma pilha. Então, deixe-me
adicioná-lo aqui também. E deixe-me, na verdade,
adicionar o item primeiro. E então diga que tem que criar a
pilha está definido como falso. E deixe-me ir em frente
e quebrá-lo. Então, no momento, não temos
nenhum pino de execução de quebra, então deixe-me clicar
nele e vamos criar outro chamado break loop. Agora vamos nos conectar
ao circuito de freio. E aqui embaixo, se for verdade, como a quantidade de
itens que precisamos adicionar, se na verdade não for
menor que o tamanho máximo da pilha, que significa que realmente
precisamos criar outra pilha. Então, vamos adicionar tudo o que temos nessa pilha atual. E então vamos
criar outra pilha. Então, novamente, assim como antes, lembre-se aqui e
na nova pilha de Craig, você calculou o que restou aqui. Então, na verdade, precisamos
fazer a mesma coisa. Vamos copiar e colar isso. Então, vou copiar
tudo isso aqui, indo para o gráfico de eventos aqui. E podemos colá-lo aqui. É isso que precisamos
adicionar ao inventário
novamente, assim como antes, precisamos adicionar a quantidade é
o tamanho máximo da pilha
para este item aqui. E vamos conectar o item. Vamos conectar o slot do
inventário, o índice do slot
e o inventário. E então vamos
definir esse booleano como verdadeiro. Portanto, temos que criar
uma nova pilha para adicionar essa
quantidade restante de itens. Então, vamos definir isso como verdadeiro. E então eu vou arrastá-lo
e conectá-lo aqui porque isso remonta
a esse loop de interrupção. Vamos clicar duas vezes aqui. Vamos limpá-lo. Então, agora vamos voltar a essa bela pilha parcial e vamos fazer algo
aqui na íntegra. E lembre-se também de fazer essa
pausa aqui dentro. Então, estamos nos
certificando de que estamos realmente quebrando
o ciclo ao máximo. Vamos pegar nossas mãos para criar uma
pilha e fazer um galho. Então, agora estamos perguntando, temos que fazer
uma pilha ou nozes? O que configuramos
durante esse ciclo? Se tivermos que criar uma pilha, queremos
definir isso como item não encontrado, porque precisamos
criar uma nova pilha. Se não precisarmos
criar uma nova pilha
, o loop
estará concluído, assim. Vamos colocá-lo
aqui, desse jeito. Então, se tivermos que
criar uma nova pilha, isso significa que o item não foi encontrado. E se o item não for encontrado, vamos arrastá-lo até
aqui e criar uma nova pilha. Então, agora o item não foi encontrado. Temos que criar uma nova pilha. Ok, então se o
item não for encontrado, criaremos uma nova pilha
e o loop estará completo, ou
seja, se já encontrarmos a pilha e
não precisarmos fazer
nada para que possamos tocar um
som ou o que quisermos. Então, agora vamos voltar para
a pilha parcial fina. Estamos perdendo uma etapa
final aqui. Digamos que dissemos aqui que temos uma pilha igual ao
nome do item que aludimos e que a quantidade
do item dentro
desse inventário é menor do que o tamanho máximo da pilha para
o item que estamos nos referindo. Se isso for falso, precisamos fazer algo
como antes. Vamos fazer esse loop
aqui e dizer mais, mais. Então, vamos
incrementar em um. E, assim como antes, estamos nos
certificando de que isso aqui seja menor do que a quantidade de slots que temos
em nosso inventário. Vamos fazer um galho. E se isso for verdade, se for menor
do que a quantidade, na verdade ,
vamos inserir aqui. E se for realmente
menor do que a quantidade de vagas, vamos seguir em frente e novamente, basta dar uma volta aqui e
encontrar um item no
próximo índice, certo? Então, eu
o organizei um pouco. Então, agora é
maior do que a quantidade de
slots que temos. Então, consideraremos que isso deve
criar uma pilha para ser
definida como verdadeira, porque não
conseguimos encontrar
nenhum item ao qual
possamos adicionar esse item aqui
também que esteja fazendo alusão. Então, temos que criar uma
nova pilha e arrastar a partir e ir em frente e
conectá-la ao intervalo. Porque agora temos que
quebrar o ciclo. E agora, quando formos adiante
e quebrarmos o ciclo, lembre-se de que quando ele estiver
concluído, ele diz: sim, você precisa criar uma
pilha e ela vai até o item não encontrado, que então passa e
cria uma nova pilha. Ok, então vamos
ter certeza de que isso realmente funciona e ver se temos
algum bug como antes. Vamos salvar tudo. Agora, as bananas têm o
valor empilhável definido como verdadeiro, então podemos experimentá-las
com as bananas. E vamos definir isso aqui também. Na verdade, vamos verificar o que
dissemos sobre as bananas. Então, indo para as
informações do item que a banana tem, se a maximizarmos,
ela terá o tamanho máximo, tamanho da
pilha de dez. Então, vamos duplicar essa banana aqui e segurando
Alt e arrastando, vou duplicá-la aqui. Então, para este, vou definir a quantidade do
item para cinco. E para este, vou configurá-lo para quatro. E então vamos copiá-lo novamente. E vamos definir esse
um para cinco novamente. Vamos salvar tudo. Vamos tentar jogar para
o servidor. Se eu clicar em AI,
clico em E aqui. Foi adicionado
à comida aqui. Sim, temos cinco bananas.
Eu clico nele aqui. Diz: “Pois há
algo com a quantidade”. Estamos configurando isso de forma errada aqui. E se eu clicar na orelha, está configurada para cinco, então
há algo errado. É só definir
a quantidade aqui. Vamos voltar. E, claro,
vejo o bug
imediatamente aqui na
busca de pilhas parciais. Na verdade, não estou adicionando
aqui a quantidade. Então, deixe-me deletar isso,
na verdade, deixe como está. O que precisamos fazer é pegar quantidade
desse item
e depois
editá-lo com o que
já está dentro do
inventário, é claro. Então, pegando isso aqui
e pegando dizendo adicionar, então mais perda, o valor que já está
dentro do inventário. Então, deixe-me conectá-lo aqui. E deixe-me conectar isso ao
T2 ed e compilar. E pouco antes de experimentarmos o jogo, então aqui no ciclo, conclua vamos destruir
o item como antes, porque o estamos adicionando
ao inventário. Deixe-me afastar tudo isso
um pouco daqui. Deixe-me colar isso. E para completar o ciclo, vamos
destruir os itens. Então, deixe-me redimensionar isso para você. Deixe-me clicar em E aqui. Agora estamos perdendo cinco
ou carregando nove. Agora deveria dizer dez
e por apenas 10,5. E eu suspeito que, na verdade isso está correto agora, mas suspeito que temos um
problema novamente com um atraso, assim como fizemos aqui com
a criação de uma nova pilha. E atrasamos o código. Se eu puder encontrá-lo aqui, atrasamos o código. Vamos fazer a mesma
coisa porque eu suspeito que está realmente
fazendo a mesma coisa aqui. Então, quando o item não
for encontrado e criando uma nova pilha, vamos atrasá-la em 0,03,
como antes. Vamos tentar antes de
reorganizar tudo, vamos clicar em Jogar. E eu vou dar uma olhada nisso. Vou voltar aqui,
vou fazer isso, vou carregar isso também. Então, agora diz cinco, ainda está funcionando. E se eu tentar
aumentar o atraso? E eu tento isso de novo? Agora, está funcionando perfeitamente. Então, na verdade, é esse atraso. Precisamos corrigir esse atraso
aqui, talvez algo em 0,05. Não sou fã de colocar
isso muito alto porque você pode realmente sentir isso no jogo
se colocar muito alto. Só estou tentando fazer com
que funcione muito bem. Então, 0,05 funciona bem, você pode fazer dessa forma, talvez 0,04 semanas também. Mas agora funciona perfeitamente. Então, agora, na verdade, estamos
adicionando esses. Então, se clicarmos em jogar, eu simplesmente amei
os que têm cinco. Então, este, eu vou deixar este
também, que tem cinco. Agora, se eu carregar este, ele também será adicionado ao
inventário. E se eu mencionei isso e isso, eu os coloquei no
meu inventário. Porque lembre-se de que tínhamos duas
facas e dois
cutelos, essa precisa ser
aumentada com o atraso. Então, talvez 0,05 seja
um número melhor. Vamos mudar isso aqui também na pilha de
criação de uma nova pilha, só para não entendermos esse bug. E como teste final, vamos rodar o jogo novamente. Deixe-me colocar isso
aqui, dá cinco. Deixe-me carregar esse meio. Isso é 2.2. Isso está correto. Isso engula isso, e
tudo isso está correto. Agora, incrível. Então foi isso para
criar uma pilha parcial. Então, vamos tornar isso mais organizado para
esse atraso, aqui estão apenas, vamos colocá-lo aqui embaixo. Então, o que estamos fazendo aqui, agora criamos uma nova pilha
e também estamos encontrando uma pilha parcial se
já a tivermos no inventário e o
item for empilhável, caso
contrário, se não for encontrado. Portanto, já temos uma pilha completa. Vamos criar
uma nova pilha para isso. E aqui no ciclo completo, você pode destruir o item. Você pode até reproduzir
um efeito sonoro, e faremos isso mais tarde. Então, organize
seu código apenas para que ele
pareça melhor,
e pronto seu código apenas para que ele
pareça melhor, por enquanto, salve seu trabalho e
vamos seguir em frente.
41. 6.06 Otimizando o inventário: Olá e bem vindo de volta. Então, agora eu quero otimizar o inventário
antes de continuarmos. Portanto, há um pequeno bug. Agora, se eu aludir a essa
aqui e a essa aqui, é quatro mais cinco, deveria ser nove bananas. E isso está correto. No entanto, se eu
clicar em Jogar novamente e aludir a eles sem
abrir o inventário, ele diz nenhum corretamente. Se eu perder o
último e ele disser dez, o primeiro baralho, e
para a próxima
pilha, não aparece dessa forma. Mostra apenas quatro. Deve ser 10.4. Portanto,
há um bug aqui. Isso ocorre porque
não estamos criando todos esses widgets, a menos que tenhamos
aberto o inventário. Então você pode ver se
eu apertei o play novamente. E se eu abrir o inventário, incluo em todas as categorias, fecho o inventário e
aludo a tudo aqui. Você pode ver que quando eu abro o
inventário, ele realmente funciona. Portanto, a razão
pela qual está com problemas desde o início é porque
não estamos abrindo o inventário. E isso porque também não
estamos exibindo todos ou criando todos
esses slots, a menos que tenhamos
aberto o inventário. Esse é um pequeno bug que
queremos corrigir. E também quero corrigir e
otimizar o inventário porque sei que o
código pode ser melhor e vamos fazer isso da melhor maneira. Mas vamos até o controle
do player. Vamos para o PC **** aqui embaixo. E até agora temos esse chamado Criar, widgets de slots de
inventário. Eu quero separar
a criação aqui. Então, o que precisamos fazer
em vez de criá-lo apenas para a categoria de
inventário selecionada. Precisamos criar isso para todas as categorias, mesmo que não
tenhamos aberto
o inventário. E então eu quero um evento
separado em que
exibamos os widgets do
slot de inventário. Então, na verdade, criamos tudo
isso
desde o início. Então, quando abrimos o inventário e
clicamos em categorias
diferentes, não continuamos criando novas. Não precisamos,
só precisamos criar isso uma vez aqui e
adicioná-los à matriz. E então, apenas exibimos os slots já criados quando clicamos
nas categorias. Então, há essa otimização
que podemos fazer. Então, deixe-me clicar com o botão direito do mouse, acessar eventos personalizados
e criar um chamado widgets de
exibição, inventário e
slot. E vamos fazer um novo aqui, atendendo
aos clientes. Portanto, trabalhe com um
cliente confiável. Então, para este,
queremos apenas exibir os widgets. Então, na verdade, é essa
última parte do código. Deixe-me copiar isso aqui. Vou clicar em
Control X para
recortá-lo e colá-lo aqui. Agora precisamos de uma referência
ao inventário aqui. Então, vou clicar aqui
e pesquisar inventário, inventário AAC e
chamá-lo de inventário. E essa, clara, as crianças também precisam estar
aqui, porque esta
serve apenas para exibir
os espaços do inventário. Então, esta é uma
palavra específica exibida, e eu vou
adicioná-la aqui. E também precisamos desse loop aqui. Também precisamos dele aqui em cima. Então, vou
copiá-lo e colá-lo aqui porque
precisamos percorrer todos os widgets
e exibi-los. Então, precisamos disso também. E eu também preciso dessa categoria
selecionada. Vou copiá-lo
e colá-lo aqui embaixo. E vamos conectar o inventário. Agora, para essas linhas e colunas, lembre-se que acabamos de dizer
aqui dividido por quatro. Vamos recortar isso aqui, colar aqui embaixo, conectá-los assim e também conectar o
índice a este ano. E aqui, para
esse inventário, o que podemos fazer é simplesmente
derivar disso e dizer, obtém, o que obtemos? Acabamos de obter esse índice aqui. E vamos pegar isso
e fazer uma pausa. E agora, para o item que queremos atualizar aqui para
o inventário, vamos arrastá-lo e conectá-lo. A quantidade também é exatamente
essa. Agora, para esse conteúdo aqui, lembre-se
antes do conteúdo ou da criança para grade aqui, o conteúdo é
esse widget que criamos. No entanto, lembre-se desse widget, estamos salvando-o dentro dessa matriz no slot
de inventário e
no índice
do slot aqui e
no slot de inventário. Deixe-me deletar isso aqui. E eu posso arrastar do compartimento de inventário e
adicioná-lo aqui ao conteúdo, além de atualizar
a interface do usuário do slot de inventário. Este índice de slides aqui. Então, deixe-me conectá-lo e
adicionar alguns nós de redirecionamento. Então, é bom dar uma olhada. Ok, então aqui eu
adicionei nós de redirecionamento. Então, o que estamos fazendo
exatamente como antes, estamos limpando as crianças e depois examinando todos os widgets que criamos. Estamos obtendo esse
índice dependendo do inventário
que
queremos analisar no momento. E então estamos pegando a quantidade desses itens,
fazendo login, atualizando a interface do usuário e também exibindo todos esses widgets de lote de
inventários. Então, agora, com este evento, só
precisamos criar
todos os widgets. Porque agora, quando clicamos
na categoria de inventário, widgets. Na verdade, estamos apenas
exibindo-os sem
criá-los o tempo todo. Então, aqui, nós também
queremos corrigir isso, porque no momento ele não está
criando todos os widgets. Você pode ver aqui. Ele está criando apenas o widget para a categoria de
inventário selecionada. Então, o que podemos fazer aqui, podemos nos arrastar assim. E exatamente o que fizemos
aqui com as categorias, acabamos de obter todas as categorias. Vamos copiar este. Obtém um nome de linha da tabela
para todas as categorias. Então, essas são as três
categorias que temos. E vamos ver o tamanho
das categorias. Então, agora ele vai imprimir três porque temos
três categorias. Deixe-me clicar com o botão direito aqui, ser
promovido a uma variável e
chamá-la de uma série de categorias. E essa é a quantia
que vamos multiplicar. Então, vamos repetir essas quantias para criar
todos os widgets. Então, deixe-me criá-lo. Portanto, não é muito confuso. E quanto ao tamanho da
quantidade de categorias, na verdade
vou arrastar
daqui e dizer menos um porque vamos
repeti-las começando do zero. Então 01.2, então não precisamos que
isso diga três l, então vamos alugar quatro vezes. Portanto, temos três categorias. Estamos começando a
imprimir do zero. Então 01.2, é por isso que
estou subtraindo por um. E deixe-me criar outra variável aqui chamada contador temporário. Então, vamos usar esse para saber quantas
vezes vamos fazer um loop. Então, se essa quantidade de categorias, vamos pegar esse contador
temporário, configurá-lo como um número inteiro,
digamos, recortar aqui. Portanto, se o
contador temporário for menor ou igual à
quantidade de categorias, lembre-se de
que o
contador temporário começa do zero, o padrão é zero. Então, se for menor ou igual, a quantidade de categorias, que é duas, então podemos seguir em frente e percorrer
as categorias. Por aqui. Vamos conectá-lo e percorrer
aqui e embaixo, em vez de usar a categoria de inventário
selecionada, vou excluí-la
e em vez disso,
usar nosso
contador temporário. Você pode clicar com o botão direito do mouse aqui, clicar em
Alterar tipo de pino e
alterá-lo para um número inteiro. Agora estamos usando um número inteiro e vamos
conectar isso aqui. Então, como você pode ver aqui, deixe-me arrastar isso para longe. Deixe-me deletar tudo isso. Arraste isso aqui, e também
desconecte isso por enquanto. Então, o que vai acontecer é que
vamos começar com zero porque o valor padrão das contas
temporárias é zero. Vamos selecionar essa
opção aqui, as armas. E agora vai perguntar, se a conta temporária
é menor
ou igual, a quantidade de categorias, que é duas nesse caso. Então, primeiro ele vai
repetir o primeiro, depois vamos adicionar
um a esse contador, então diz um. E então ele vai
passar por isso, depois vai passar
por isso. E quando chegar a três, quando chegar a três, essa
será realmente maior do que a quantidade de
categorias, que é duas. E então
não vai mais rodar. Então é isso que estamos fazendo. Então, vamos conectar esse inventário a essas três categorias. E aqui, vamos
reconectar isso à matriz. E também vamos reconectar
isso às coisas que estão aqui. Vamos compilar. Agora, quando concluirmos o
ciclo do primeiro, vamos pegar o contador
temporário, dragão e dizer mais, mais. Então, estamos adicionando um
ao contador. E então vamos
analisar isso novamente. Então, vamos começar a partir daqui, criar widgets de slots de inventário. Crie widgets de slots de inventário. E temos que configurar
o inventário novamente. Podemos simplesmente arrastar
este e conectá-lo aqui. Então, agora está funcionando. E se dermos uma olhada aqui, não queremos
essa, então vamos excluí-las aqui e eu vou
criar algumas notas de redirecionamento, então é melhor dar uma olhada nisso. Agora eu o
organizei aqui, como você pode ver, para que você possa ver o código aqui. Então, primeiro, estamos obtendo
quantas categorias temos? E estamos subtraindo
por um porque o contador temporário
começa em zero. Portanto, temos três categorias
no total a partir de 01.2. Então, essas três categorias, vamos
analisá-las aqui. E cada um deles
vamos percorrer
a categoria. Vamos criar widgets. E vamos
adicionar, assim como antes, as categorias ou
os espaços de inventário à matriz de categorias que
selecionamos. E, novamente,
agora estamos selecionando um contador temporário. E quando terminamos o
ciclo do primeiro. Então, quando terminamos o ciclo
da categoria de armas, vamos aqui
para a versão completa, vamos adicionar uma
ao contador temporário. Então começa do zero, depois chega a um. E então estamos recriando widgets
do slot de inventário aqui. Então, ele vai executar isso de novo. E agora o
contador temporário é igual a um. E então, ele
realmente criará todos
os widgets para
a categoria de alimentos. E então, quando terminar, ele vai configurá-lo para dois. E então ele vai
criar para as poções. E quando chegar a três aqui, então vai dizer falso. E o que podemos fazer
aqui no final, quando criamos todos os
widgets aqui, podemos exibir o inventário, então podemos chamá-lo Exibir inventário, widgets de slots. Então, deixe-me ligar para
o cliente aqui antes que eu esqueça a exibição aqui. E o inventário para o
qual podemos arrastá-lo até aqui. E vamos chamá-lo
aqui quando estiver dobrado. Quando criamos
todos os widgets, digamos widgets de exibição,
inventário e slot. E para o inventário, vamos colocá-lo aqui, conectá-lo aqui com
os nós de redirecionamento e compilar e
salvar tudo. Portanto,
também temos essa lógica para o jogador. Então, na verdade, não vamos aqui, vamos para o player de plantas. E aqui dentro, lembre-se que no começo
dissemos inicializar o inventário. Estamos redimensionando sua
raça. Isso é bom. E aqui estamos criando
os widgets de categoria
que é bom. E os slots de inventário também. Então, isso está correto. Agora vamos
voltar ao inventário. Acho que temos alguma lógica
que precisamos mudar aí. No inventário de componentes. Temos esse
quando clicamos em uma categoria no inventário. E, na verdade, posso voltar
apenas para esclarecer. Para a categoria de inventário
quando a pressionamos, lembre-se de que, ao pressioná-la, definimos a categoria
do inventário. E se você clicar duas vezes
aqui, é esse código aqui. Estamos criando os widgets
de slots de inventário. Agora, otimizamos
o inventário, então vamos excluí-lo e, em vez disso, vamos
simplesmente exibir widgets de slots de
inventário. Agora podemos simplesmente exibi-los e o inventário é otimizado. Não precisamos, não
precisamos
criar esses widgets
repetidamente. Tudo bem, então vamos testá-lo
antes de fazermos qualquer outra coisa. E acho que temos tudo. Tudo parece bom. Vamos compilar, vamos salvar. Vamos clicar em Jogar e
ver se temos algum bug. Então, deixe-me
saquear tudo
como antes e ver se
consigo realmente carregá-los agora. Então, se eu clicar em Eu
abri meu inventário, eles estão sendo carregados corretamente. A mesma coisa para
esses aqui. Agora, quando você
alterna a categoria do inventário, na verdade, está apenas
exibindo o que
já criamos. Então, isso é muito
para otimizar agora. É muito otimizado com o bug de inventário corrigido e
com o inventário otimizado. Vamos passar para
a próxima lição.
42. 7.01 Adicionando a operação de arrasto e solta: Tudo bem, agora estamos prontos para arrastar itens do inventário. Então, vamos até a interface do usuário
e ir para o espaço de inventário. Então, o que
vamos fazer agora é retirar
do inventário. Então, se eu clicar em Jogar, eu quero, se eu tiver um item aqui, quero arrastar esse item e
soltá-lo no chão. Então é isso que
estamos tentando fazer. Vá para dentro do compartimento do inventário. Vamos ao gráfico. E dentro desse gráfico, vamos às funções e clique
no botão Substituir. Agora, aqui estamos
descendo e vamos ver aqui, vamos escolher este chamado
botão do mouse para baixo. E isso cria essa
função aqui. E aqui o que queremos fazer é
simplesmente
arrastar daqui e dizer seita, arraste se pressionada. Então você tem que fazer
isso para que ele possa detectar o botão do
mouse
e clicar aqui e eu vou clicar
no botão esquerdo do mouse, ou você pode simplesmente encontrá-lo aqui. E para o evento do mouse, vamos conectá-lo aos eventos
do ponteiro. E para o valor de retorno, vamos
conectá-los aqui. Tudo bem, vamos compilar agora. E, novamente, nas
funções aqui em cima, clique na substituição novamente. E vamos pesquisar por
nenhum arrasto detectado. Então, está aqui
quando detectado o arrasto. Selecione este aqui. E aqui, vamos imprimir uma string e você pode
ver o que está acontecendo. Então, eu só vou dizer olá. Vamos compilar e
clicar em reproduzir. E se eu abrir meu
inventário e clicar aqui, você verá que diz Olá. Se eu clicar e arrastar, agora ele realmente detecta
que estou arrastando. E aqui diz baixo. Então, agora podemos adicionar algum
código dentro daqui. Então, antes de fazer qualquer coisa, vamos fazer uma referência
ao player e ao controlador do
player. Então, novamente, estamos dentro
de uma interface de usuário e, para nós você pode dizer Get Owning layer. Isso lhe dará o controle
do player. E se você usar get Owning
Player Pawn, isso fará com que você, o personagem do jogador que está recebendo
este aqui, faça com o controlador do jogador se
arraste dele dizendo que obtém controlador de camada. E, novamente, isso é da interface
Blueprint que podemos usar. Vamos clicar com o botão direito do mouse em promovido para uma variável e chamá-la de controlador de
layout. E, novamente, clique com o botão direito do mouse
dizendo Get Owning layer neste momento. Então, podemos pegar o jogador
e, a partir daqui dizer que fica a camada Eric no topo. Este recebe sua referência. E, obtendo a
referência do jogador, podemos clicar com o botão direito do mouse, promover sua variável
e salvar a camada. Ok, então o que estamos tentando fazer aqui agora quando clicamos em jogar. Então, o que eu quero que você faça
é o que eu tenho neste item. Eu só quero obter
as informações dentro deste item
porque, quando arrasto aqui, quero exibir o ícone que estou arrastando
do peão do jogador. Vamos pegar o inventário
novamente, inventário. Vamos rolar para baixo e
selecionar esse inventário. E, assim como antes, precisamos de todas as categorias. Então, se você escrever categoria, você pode obter a categoria de armas e a
categoria de alimentos
e, em seguida, a categoria de poção. E, assim como antes, precisamos do inventário selecionado
porque precisamos saber qual inventário
selecionamos atualmente. Então, como antes, vamos clicar com o botão direito do mouse e escolher
a função de seleção aqui, selecionar nó,
pescoço e selecionar inventário. E, novamente, basta conectar
todos esses inventários. Então, dependendo do que
selecionamos aqui, vamos arrastar e dizer que obtém. E agora ele perguntará
qual índice de slots de
inventário
você deseja obter. Lembre-se de que estamos no compartimento
do inventário. Então você já tem esse índice de slot
variável. Então, vamos conectá-lo aqui. Então, agora estamos obtendo o
índice em que estamos clicando. Agora, antes de executarmos o código de
detecção de arrasto, vamos
nos certificar de que temos um item porque eu não quero
que o arraste funcione pois os espaços de inventário
estão vazios. Então, venha aqui para dizer pausa. Portanto, para a quantidade desse item, ela não é igual. Então, podemos escrever isso. Se não for igual a zero, quero que o código
continue sendo executado. No entanto, se for zero, não
queremos que o código seja
executado porque o compartimento do
inventário está vazio. Mas agora o mais
importante, essa é a função
que é muito importante. Vamos clicar com o botão direito do mouse e criar a operação de arrastar e soltar. Então, este arrastará
o ícone e
perguntará qual é o visual de arrastar padrão, que é o ícone que
estamos arrastando. Lembre-se novamente de que estamos dentro
do compartimento do inventário. Então, podemos pegar
este aqui,
o inventário de imagens ou, na verdade, o item de imagem aqui. Conecte-o aqui. E agora temos o
item conectado, apenas certificando-se de que o slot do
qual estamos arrastando não esteja vazio. Então, na verdade, temos um
ícone que estamos arrastando. Tudo bem, então foi isso. Agora estamos conectados aqui. E para a operação, vamos conectá-lo
assim. Você pode clicar aqui,
clicar na altura da pinça
desconectada
apenas para deixá-la mais limpa e vamos experimentá-la. Então, vamos compilar,
vamos clicar em Jogar. E se eu arrasto
assim, nada acontece. Se eu for até lá e
carregar isso, eu arrasto. Agora você pode ver que estou
arrastando o ícone. Está ótimo. Se eu fizer
isso com a banana, por exemplo e eu arrasto, agora, estou arrastando a banana. Agora você pode ver
que está funcionando. Mas agora precisamos que o código
funcione onde realmente
colocamos o item.
43. 7.02 item de queda do inventário: Ok, agora queremos
descartar o item e, para fazer isso, vamos para a interface principal aqui. E dentro daqui,
vamos ao gráfico. E, novamente, como antes, e as funções
clicam na substituição. E vamos selecionar
esse chamado on drop. Porque inicialmente, quando você
está jogando o jogo aqui e pegando um item e o retirando
do inventário, na verdade
está colocando-o
em cima da sua interface principal. Vamos escrever esse
código aqui dentro. Agora, antes que funcione, você pode ver aqui se
eu imprimir uma string
no UNDRIP para a
interface principal, ela precisa de olá. Então você pode ver que o
código está funcionando. No entanto, no momento,
não é arrastando e soltando. Você pode dizer que
não é dizer olá. O código que estamos escrevendo
aqui na verdade não está funcionando. Então, para fazer isso funcionar, você pode ir para o slot de
inventário. E aqui dentro, no gráfico aqui, para detectar o arrasto, você precisa pegar o controle
do player. Já fizemos essa referência. Pegue o controlador do player, use a variável principal da interface do usuário. E você realmente precisa definir a visibilidade do Canvas. momento, se você
clicar na tela, verá que
a visibilidade não pode ser testada
e, na verdade, precisa estar visível aqui
para que funcione. Mas não queremos
alterá-lo por padrão porque visível significa que ele bloqueia o
mouse quando você brinca. Portanto, só queremos alterá-lo sempre que
soltarmos o item. Então, vamos voltar ao espaço
do inventário. E aqui, vamos pegar isso
e dizer definir visibilidade. E queremos definir
a visibilidade como visível. Então isso está correto. Vamos pegá-lo aqui e soltá-lo logo antes de
terminarmos a operação. Estamos tornando esse
menu visível. E vamos criar
alguns nós de redirecionamento e
conectá-los da seguinte forma. Tudo bem, então vamos compilar e voltar
à interface principal. E agora, se
tentarmos desistir, vamos dizer olá. Então, vamos jogar aqui. Vamos até esse Cleaver. Vamos arrastar e soltar. E você pode ver que diz Olá. Então, agora o código está
funcionando aqui
na função Andhra
para a interface de usuário principal. Então, aqui, antes de começarmos, assim como antes, quero uma
referência ao meu jogador. Então, vamos clicar com o botão direito do mouse e
dizer Get Owning layer upon, vamos arrastar e dizer
Get Player Reference. E vamos conectá-lo. E vamos clicar com o botão direito do mouse
e promover isso para uma variável e dizer camada sobre. Agora, o que deve
acontecer quando eu
coloco o ícone aqui no nível é que ele precisa gerar o item novamente. Então, agora eu preciso gerar o item. Precisamos de alguma lógica de desova. Normalmente, na desova, fazemos
isso no controlador do jogador. Então, vamos até o controle
do player. E no
controle do player, aliás, você pode ver que eu criei
comentários para tudo só para você quando eu
te forneço todo o código. Então é muito bom ver
e criar comentários. Se você não sabe,
você pode simplesmente passar por cima de alguns dos elementos e
clicar em C no teclado, e isso cria comentários. É muito bom estar
organizado assim. Tudo bem, então vamos
até aqui e vamos clicar com o botão direito do mouse e
criar um novo evento personalizado. E vamos chamar isso de item
único. E para soltar o item, precisamos
colocá-lo no nível. Então arraste aqui e diga
spawn actor from plus. E agora precisamos
do último item que estamos gerando. Vamos arrastar isso, conectá-lo aqui, essa
transformação de ligação também. E para lidar com a colisão, você pode simplesmente dizer tente ajustar a
localização, mas sempre apareça. E quando geramos o item, também
queremos gerar
a quantidade dele. Então, arrastando daqui, agora isso é um objeto de um ator. Portanto, não podemos simplesmente dizer a quantidade
definida do item, como temos aqui no, se você se lembra
na base do item, se eu for para a base do item, temos essa quantidade de itens
definida. No entanto, eu só preciso de uma
referência ao item primeiro, se você puder dizer
obter referência
do item, aquela que fizemos antes
com a interface. E agora você pode dizer
definir o item uma vez por t. Agora também precisamos definir a quantidade quando
geramos o mesmo dependendo de quantas
retiramos do inventário. Vou arrastar isso
e conectá-lo aqui. E eu vou arrastá-lo
para
cima ou para baixo da classe. Em vez disso, vou
chamá-la de item. A quantidade de itens é boa
e a transformação do spawn também
é boa. Tudo bem, então, geralmente,
quando geramos coisas, passamos pelo modo de jogo. E a razão pela qual
passamos pelo modo de jogo, se você se lembra do compêndio
multijogador, esse modo de jogo sempre
existe no servidor, nunca existe no cliente. Portanto, ao passar pelo modo de jogo, garantimos que
o cliente não gere coisas aleatoriamente
e trapaceie. Então, precisamos
passar pelo modo de jogo. Neste, na verdade,
agora estamos trabalhando de trás para frente. Precisamos sair do componente
de inventário. No entanto, eu comecei aqui. Então, na verdade,
está mais claro onde está
o problema, o objetivo principal aqui
é usar esse chamado ator de spawn e
estamos respondendo ao item. Então, agora vamos trabalhar de trás para frente. Vamos para o modo de jogo, porque o modo de jogo precisa chamar esse evento.
Então, vamos voltar. Desenha um modo. Vamos abrir o editor de
plantas completo. E aqui vamos criar um novo evento
personalizado chamado request. Solte o item. E esse precisa chamar isso do controlador do player. Então, deixe-me clicar aqui e criar uma variável para
o controlador do player. E o PC **** está inoperante, é
assim que o chamamos. E, digamos, controlador de layout. E a partir do controle do player, vamos arrastar e chamar essa função de
soltar item. Somos um evento que fizemos. Para os itens. Vamos
clicar, arrastar e soltar. E para essa
transformação de vínculo, vamos sair
daqui e dizer fazer transformação. Normalmente, faço a transformação
no Modo de Jogo e outros locais novamente e
simplesmente clico, arrasto e solto no item de solicitação. Agora, aqui não precisamos
replicar e executar no servidor, porque lembre-se novamente que o modo de jogo sempre
é executado no servidor. Você não pode executar nenhum cliente
aqui,
o cliente não pode
acessar o modo de jogo. Tudo ou criar aqui
sempre é executado no servidor, então não precisamos configurá-lo para replicá-lo para o servidor aqui. Ok, então a última etapa, esse
item de retirada de solicitações, precisa ser executada a
partir dos componentes, o componente de
inventário. Vamos voltar aos componentes. E tudo começa aqui,
então, na verdade, estamos
trabalhando de trás para frente. Então, aqui vamos clicar com o botão direito do mouse e
criar um novo evento personalizado. Vamos chamar isso de “Drop”. Oi Tim. Aqui. Vamos criar
um novo rodando
pelo servidor chamado drop item. Assim, execute
em um servidor confiável. E neste,
vamos chamar o servidor de um item de descarte do servidor. E aqui precisamos chamar
o do Modo Jogo. Então, vou
clicar com o botão direito do mouse e dizer obtém um modo e depois arrastar
daqui e precisamos obter a referência
do modo de jogo. No entanto, acho que não
criamos nenhuma interface, Blueprint Interfaces,
para o modo de jogo. Então, vamos fazer isso aqui. Você pode fazer isso sozinho se
quiser ou se exercitar, e você pode fazer isso comigo. Agora, vamos clicar com o botão direito do mouse,
ir para blueprints, criar uma
interface de Blueprint, um modo. Vamos abri-lo e criar aqui uma nova função chamada get
Game Mode reference. Agora, aqui precisamos dizer o que
estamos tentando referenciar? Estamos tentando fazer
referência à cidade dos insetos. Este, esse é o nosso modo de jogo, e vamos chamá-lo de modo. Agora vamos compilar
e salvar tudo. E vamos voltar
ao Modo de Jogo, acessando as
Configurações da Classe e adicionando
essa interface, o modo de jogo de
interface. Agora vamos clicar aqui
e nas interfaces, e vamos chamar a
autorreferência. Então, agora definimos
o que é essa variável. Agora podemos voltar ao componente de
inventário novamente. Podemos arrastar aqui e dizer que
obtém uma referência de modo. Agora vamos conectá-lo. E a partir daqui, queremos executar o
evento de solicitação de entrega de item que fizemos. Tudo bem, então agora
vamos conectá-los aqui. Vamos conectar o controle
do player, o item, a
quantidade do item e a localização. E agora nós os temos
aqui no item suspenso. E nós vamos
fazer a mesma coisa. O controle do jogador, o item, a quantidade do item e também
a localização. E agora podemos usar
esse dentro da interface principal. Então, vamos usar isso. Então, o que vai
acontecer é
que vamos ligar
pela interface principal. E ele vai
passar por aqui, passando pelo servidor só para ter certeza de que não está
recusando executá-lo. E vai
passar pelo modo de jogo. Ele solicitará que
o item seja descartado aqui no Modo de Jogo. E então, quando isso for possível, ele soltará o item, o controlador do jogador,
onde ele vincula o item e
a quantidade. Então, vamos para a interface principal aqui. Então, aqui dentro
do peão do jogador, vamos fazer o inventário, porque agora queremos
chamar esse evento aqui. Você entrará aqui pegando a variável de inventário do AAC
aqui embaixo. Agora podemos dizer soltar o item
e selecioná-lo aqui. Agora precisamos de um plugin
para o controle, que
possamos simplesmente
arrastar e
salvar o controle do jogador. Já criamos uma
variável dentro daqui, conecte-a aqui e agora
precisamos da classe do item. Então, como podemos conseguir esse? Assim como antes, vou
até o compartimento de inventário e vou copiar
tudo isso aqui. Então, copiando tudo isso
e copiando isso também. Vou voltar para a interface
principal, colando-a aqui. Vou excluir
esse índice de slug, então eu só tenho isso aqui. E para o inventário, podemos simplesmente conectá-lo. Vamos pegar o Peão do Jogador
só para deixá-lo mais limpo. Em vez de conectar isso aqui, vamos pegar o
peão do jogador chamado variável de
inventário AAC novamente aqui e depois
conectá-lo a tudo isso. E agora, para o índice, precisamos saber o que
estamos arrastando. Porque agora, quando
estamos arrastando um item, precisamos realmente saber o que é esse índice de slots do qual
estamos arrastando. Então, vou
voltar para a interface do usuário abrir o inventário
e ir para o gráfico. E aqui vou
adicionar uma nova variável, essa variável que
chamarei de índice de slot arrastado, e vou
configurá-la como um número inteiro. E vamos compilar. Agora, vamos voltar aos slots
de inventário. Então, aqui no compartimento do inventário, quando saímos disso,
vamos definir o índice do compartimento dos
medicamentos aqui. Então, vou
insistir um pouco aqui. Vamos pegar o controlador
do player, vamos chamar a variável de
inventário WB. E a partir daqui, criamos
o índice do slot Dragged. Vou colocar isso aqui e
arrastá-lo até aqui, configurá-lo. E para o
que vamos configurá-lo? Vamos simplesmente configurá-lo para esse índice de slots aqui, porque esse é o índice de slots
que estamos arrastando. Se eu compilar agora e
voltar para a interface principal, posso usar o controlador
do player. Então, vou pegar
o peão do jogador, vou pegar o controle
do jogador. E a partir daqui, podemos pegar
a variável de inventário WB. E agora podemos chamar
o índice do slot de arrasto. Podemos conectá-lo ao que está aqui
para obter as informações do
item. Então, agora podemos pegar
isso e fazer uma pausa. Vou pegar
tudo isso e empurrá-lo para trás aqui. Portanto, para a classe do item, nós a temos dentro desse item. Então, se você pegar e disser
pausa e abrir aqui, temos essa classe de item. Podemos conectá-lo
ao item de acordo com a
quantidade que temos aqui. Então, vamos conectá-lo e
pedir a localização. Vamos colocá-lo onde quer que
o jogador esteja atualmente. Então, pegar o
ditado Player Pawn dá a localização do ator. Pegando isso aqui e você pode
conectá-lo ao local, clicando nesta
, pressionando ocultar canetas
desconectadas e esta para ocultar coisas
desconectadas. Tudo bem, então agora estamos
realmente descartando o item. No entanto, também precisamos
atualizar o inventário. Então, vou
pegar esse aqui e dizer definir elementos da matriz. E vamos conectá-lo aqui, ou o item que precisamos para remover o item
do inventário. Então, vamos dizer aqui e dizer fazer. E vamos criar
esse espaço de inventário. Portanto, para o item, não
vamos adicionar nada que
exclua o item
do inventário, bem como a quantidade. Não
vamos adicionar nada. No entanto, ainda precisamos manter nosso slot de inventário e nosso índice de slots para que eles
não sejam excluídos. Então, clicando aqui
no slot de inventário, vamos mostrar também nosso
inventário, slot de estoque e
índice. Vamos arrastá-los para aqui. E a única coisa que
vamos excluir é o item, além de definir a
quantidade como zero. Agora clique aqui,
escondendo os pinos desconectados. E agora, para o
índice, podemos simplesmente arrastar a partir desse índice de slot
arrastado. Podemos simplesmente copiá-lo se você quiser. E ele pode colá-lo
aqui apenas para torná-lo mais limpo e você pode
conectá-lo aqui. Agora também precisamos
atualizar a interface do usuário. Lembre-se de fazer isso também. Então, diretamente
do compartimento do inventário, dizendo atualizar inventário, há uma lógica
conectando-o ao item. Não vamos
inserir nada que exclua o item
do inventário, além de
definir a quantidade como zero. Agora, lembre-se de fazer
isso agora que
atualizamos tudo o que precisamos atualizar e vamos conectá-lo aqui agora. E lembre-se de clicar
no tíquete booleano aqui. Então, é verdade e vamos compilar e
agora experimentar o jogo. Então salve tudo,
clique em Jogar. Agora vamos seguir em frente
e perder alguma coisa. E vamos clicar e
arrastá-lo para o mundo. E você pode ver que está
surgindo, incrível. E eu vou arrastar
esse também. Está desovando. E se
eu clicar na banana, pegá-la,
arrastá-la e soltá-la. Cai aqui. Se eu clicar nele, aludido novamente, ele carrega
a quantidade correta. Se eu clicar aqui,
deixo que esse é dez. Essa é para,
eu amei essa. Na verdade, deveria
analisar isso primeiro. Diz quatro. Vou carregar
este, somar seis aqui e depois
dizer quatro aqui. Então, na verdade, está funcionando
como deveria agora
que estamos retirando
itens do inventário, vamos adicionar um pouco de física, então fica bom
quando os estamos descartando e
eles não estão
flutuando no mundo.
44. 7.03 Habilitando a Física de Armas: Para habilitar a física
dos itens, vamos clicar
nos Itens e nas plantas. Vamos abrir a base de itens. E aqui dentro, se
você clicar na classe, os padrões estão na
malha e no item aqui, você pode ver aqui
no painel Detalhes que
temos algo
chamado Física. E aqui você pode
clicar em simular física para que ela
caia no chão. No entanto, você pode
ver que não podemos clicar nele. Então, o que podemos fazer é clicar com o botão direito aqui. E no começo,
como em eventos, podemos arrastar esse item direto
daqui e dizer simular física. Então, defina a física simulada e vamos
defini-la como verdadeira. Então, toda vez
que uma arma aparecer ou um item aparecer, isso fará com que a
física seja verdadeira. Agora vamos clicar em Jogar
e ver o que acontece. E agora, se eu
clicar aqui e soltá-la, você pode ver que ela ainda está flutuando e tem algo a
ver com a colisão. Então, clicando no item. E se formos até aqui
para a colisão, você pode ver que está configurada
para não colidir. E em vez de não haver
colisão, clique em Personalizar. E aqui, religião ativada, vamos clicar nela e
dizer religião ativada. Então, é consulta e física, precisamos da física aqui. Portanto, a colisão está ativada. E vamos
ignorar tudo , exceto o mundo dinâmico
e o mundo estático. E este é o chão para que não caia do chão. Vamos compilar agora e
clicar em play. E deixe-me perder alguma coisa. E se eu clicar e soltar, você pode ver que ela cai, mas é falsa
no chão. E se isso acontecer com você, eu realmente descobri por
que isso estava acontecendo quando
tentei fazer isso. E isso porque
a colisão é muito ruim para esses
itens que eu baixei. Então, se você acabou
de abrir um dos ativos, por exemplo , um
item inteligente,
vamos corrigir este. Então, esse item inteligente, se você clicar em mostrar, talvez isso aconteça com
seu projeto também. Então, mostrando as
colisões simples aqui, isso é uma colisão simples. E o que você precisa fazer é aqui nas colisões
você precisa adicionar uma caixa de colisão simplificada. Você pode ver que esses bugs
simples foram adicionados. Se você clicar nele. Agora vou pressionar
R para a ferramenta de escala. E eu vou ampliá-lo. Em vez disso, vou reduzir minha
escala para esta. Vamos reduzir um pouco a velocidade
da câmera. Vou ampliá-lo um pouco. Então, podemos ver que há uma
pequena colisão aqui. Esta é a caixa de colisão
que aumentamos e diminuímos. Eu vou escalar
algo assim e também para lados assim. Vou testá-la
aqui para ver a faca. Vamos clicar na caixa de
colisão simplificada. Agora você pode clicar nele
e aumentá-lo dessa forma. E também use palavras
como essas. Eu também faço isso. Deixe-me fazer isso com
a banana também. Deixe-me ir para a colisão
e depois simplificar a caixa. E eu vou ampliá-lo. E a razão é essa a colisão é muito forte, então está caindo
do chão desse jeito. Agora vamos salvar
tudo e testá-lo com os
itens que já temos. Agora, você pode ver que está
flutuando um pouco, e esses são apenas os itens. Eles são uma colisão muito ruim. Então, vamos pegá-lo,
vamos deixá-lo no chão. E você pode ver agora que não está
caindo do chão. Assim, você pode corrigir a
colisão em seu item, torná-lo mais
específico agora. Isso é feito muito rapidamente. Então, vou adicionar a colisão
também às minhas poções. Mas agora você pode ver que eles
não estão caindo do chão e tudo
está funcionando perfeitamente.
45. 8.01 obtendo informações de slot: Ok, agora é hora de mover os itens entre
os slots
do inventário. Então, quando perdemos um item aqui e a quantidade
é definida como dois, é por isso
que estou me referindo. Mas você pode vê-la.
Não consigo movê-los entre
os diferentes slots de inventário porque ainda não fizemos isso. Podemos simplesmente arrastá-los
e soltá-los no mundo e carregá-los novamente. No entanto, não podemos arrastá-los
para novos espaços de inventário, e é nisso que
trabalharemos. Vamos até a interface do usuário
e pressionar o slot de inventário. E dentro do gráfico, vamos seguir em frente e
criar duas funções. Então, aqui nas funções, vamos clicar no
sinal positivo e vamos chamar o primeiro, obtemos espaços
arrastados. E vamos adicionar outro
chamado get new slots, slot and get the new slots. Portanto, queremos obter algumas
informações sobre esses dois slots porque os
atualizaremos. Vamos para o primeiro, pegar
um slot de arrasto. E dentro daqui, vamos
pegar o controlador do jogador ou o player e o inventário
AAC, variável de inventário. Então, agora queremos obter as três categorias,
procurando por categoria. Primeiro, obtendo a categoria de
armas, obtendo a categoria de alimentos e obtendo a última,
a categoria de poções. E também obtenha esta categoria de inventário
selecionada. E, assim como antes, vamos selecionar o
negativo aqui e conectar todas as nossas
categorias, inventários. E já estamos fazendo
isso muitas vezes. Então, agora só queremos obter algumas informações sobre
o slot Dragged. Portanto, dependendo do
inventário que
selecionamos, queremos obter esse item. E agora qual item é esse? É da loja de drogas. E lembre-se de que já criamos índice de slots de inventário
arrastado, e ele está dentro do controlador
do jogador. Então, o que podemos fazer é aqui, o peão
do jogador e o controlador do jogador, vamos realmente voltar do não foi detectado e
os fizemos entrar aqui. Na verdade, vou
eliminá-los
daqui e colocá-los no evento
inicial do jogo. Em vez disso, basta arrastar o
jogador
desse jeito e conectá-lo aqui. Ok, então isso está conectado. E vamos voltar
ao Event Graph e fazer com que ele comece a jogar. E aqui vamos adicionar esses dois aqui para que sejam definidos sempre que começarmos a
jogar o jogo. Tudo bem, vamos voltar para
os slots de arrastar. E dentro daqui, vamos
pegar o controlador do jogador,
digamos, o inventário WB, então a variável do
widget de inventário. E aqui temos esse
chamado índice de slots arrastados. E vamos conectá-lo aqui. Então, agora estamos obtendo
o índice de slots Dragged. E a partir desse, agora
podemos dizer pausa. E essas informações, vamos
apenas adicioná-las a um nó de retorno. Então, arrastando
daqui para dizer return, adicionando um nó de retorno. E vamos arrastar todas as
variáveis dentro do nó retornado
para que possamos usá-las posteriormente. Como estamos apenas obtendo
algumas informações, podemos clicar nessa
função e clicar em puro. Então, isso está transformando-o
em uma função verde, que é simplesmente
obter informações. Assim, você pode ver o gráfico de eventos. Se eu arrastar isso aqui
para o mundo, é apenas essa função Get
verde que não tem pinos de execução porque a definimos como pura. Tudo bem, então agora vamos fazer com que
este obtenha um novo índice de slots. Então, ao ser arrastado, estou apenas copiando tudo
isso. Vou obter um novo índice de slots. Estou colando
tudo aqui. E agora podemos
arrastar novamente a partir daqui, criar um nó de retorno. E vamos conectar, como
antes, conectar todas as variáveis aqui. E em vez de fazer o índice de slots
para obter arrastado, vamos pegar esse índice de slots. Este é o novo
slot, índice de slots. Então, vamos compilar
tudo e salvar. E foi isso para
o índice de
slots ser arrastado e obter
um novo índice ****. E nós os usaremos
para atualizar o inventário.
46. 8.02 Actualizar informações de slot: Ok, agora criamos
o
slot de arrastar e obter novas funções de slot. Agora vamos
fazer a atualização mais uma vez, acesse aqui e crie uma nova função. Vamos chamar a
primeira de atualizações, arrastar slugs e
criar uma nova chamada atualização de novos slots. Vamos entrar no slot de
atualização arrastado. E, novamente, precisamos apenas das informações do slot
Dragged. Então, eu vou voltar aqui e
eles serão arrastados. Vou copiar
tudo isso e
voltar ao slot de arrastar de atualização e colá-los aqui,
e para atualizar o slot
novamente como antes, arrastar daqui define os elementos da
matriz. E agora vamos conectá-lo aqui. Agora queremos atualizar o índice do slot arrastado
e, para o item, vamos arrastá-lo aqui e
dizer criar um espaço de inventário. E aqui, vamos
criar novas variáveis. Vamos criar dois aqui. Mas o primeiro será
chamado de item de slot arrastado e o segundo será
chamado de quantidade de novos itens. Vamos mudar esse para um
número inteiro e o primeiro
para uma estrutura de informações do item. Então, este é o item, aquele medicamento simplesmente
vai entrar neste item aqui para esta matriz,
bem como para a quantidade. Vamos arrastar isso e
usaremos isso mais tarde. Mas deixe-me arrastar
tudo para baixo. Quanto ao antigo
slot de inventário e ao índice de slots, não
queremos alterá-los. Eles permanecem os mesmos. Então, vamos extraí-lo aqui do índice direto de slots. Vamos apenas
conectá-los novamente porque não
queremos alterá-los. A única coisa que queremos
mudar no compartimento do medicamento é o item e a quantidade
provenientes dessa entrada. E quanto ao índice do slot
aqui para a matriz, podemos simplesmente arrastar esse
índice de slot e conectá-lo. E agora estamos atualizando
o inventário. Mas lembre-se de que você também
precisa atualizar a interface do usuário. Então, vou sair
desse espaço de inventário
e dizer atualizar,
atualizar a interface do slot de inventário. E vamos conectá-lo
. Quanto ao item, vamos colocar este
item e novamente, bem
como a quantidade do item. Então, vou
criar algumas notas. Você pode clicar
neste e
clicar em Ocultar pinos desconectados, certo? Então, adicionei algumas
notas de redirecionamento e as organizei. Então, agora o que estamos
fazendo é simplesmente obter o índice do lote de arrasto
ou obter o item. E aqui só precisamos
do slot de inventário e do índice do slot e conectá-los novamente
ao novo, porque
não queremos perder
essas informações. A única coisa que estamos
mudando é o item e a quantidade do índice
do slot arrastado
ou item que, quando o
arrastamos para índice
do slot arrastado
ou item que, quando o
arrastamos o inventário também
nos lembramos de atualizar
a interface do usuário. No final, porém, para o novo slot de atualização, vou
excluí-lo e vamos clicar com o botão direito do mouse aqui e
clicar em duplicar. E vamos
chamá-lo de update mu slots. E a única coisa
que realmente vamos mudar aqui dentro. Vamos excluir
esses medicamentos como o índice
e, em vez disso, usaremos esse
novo índice de slots. Deixe-me pressionar um
pouco o código e organizá-lo. E isso é, na verdade,
tudo, todo o resto permanece o mesmo. Este ainda é o
item do slot de drogas que você verá mais tarde, e tudo é o mesmo. A única coisa que
estamos fazendo aqui é obter esse novo índice de
slots e manter as informações sobre também
manter as informações sobre
o widget do lote de estoques
e o índice de slots. Agora, vamos compilar
e salvar tudo. Então, agora nós temos esses. Se eu voltar ao Event Graph,
teremos este. Obtenha o slot de unidades indexado, obtenha um novo índice de slots. Na verdade, este, clique
novamente em puro. Então, nós temos isso assim. E então temos o
slot de arrasto atualização
e atualizamos o novo slot. Então, agora nós os temos e podemos usá-los para atualizar
o inventário.
47. 8.03 item de queda no inventários: Ok, agora estamos prontos
para colocar o item nos novos e antigos slots de
inventário. Então, vamos voltar ao espaço
do inventário. Vamos ao gráfico. E aqui, assim como antes de
clicar na substituição, desça e selecione
esta chamada Drop. Então, agora vamos imprimir uma
string e ver o que acontece. Veja se o código é executado. Então, deveria dizer
Olá se eu arrastar, então se eu clicar em jogar e
arrastar daqui para aqui, agora, nada acontece
porque não há itens. Então, se eu arrastar aqui e
soltar aqui, você pode ver que diz Olá. Mas para slots de inventário
em que eu não tenho itens, isso não diz nada,
então isso é bom. Mas se eu arrastar aqui, solte , diz Olá, então tudo está funcionando como deveria. Agora vamos criar uma
nova variável aqui, que é booleana, e vou
chamá-la de empilhável. Agora, o que queremos
fazer é verificar para nós uma coisa e definir se o item é empilhável ou não é empilhável. Vamos chegar aqui e pegar o novo slot e também
o slot direto. Primeiro, o que queremos
verificar é se estamos arrastando o mesmo item um
sobre o outro. Então, pegando este
item dizendo pausa, assim
como este item dizendo pausa para o novo item para o qual
estamos arrastando. Esse nome está
no novo compartimento de itens, é o mesmo que estamos arrastando do compartimento
do motorista? Se for, isso significa que
é o mesmo item. E também precisamos verificar
se esse item é empilhável. Se você clicar com o botão
direito do mouse e
clicar com o botão direito do mouse em B, verá este
e o booleano. Então, primeiro aqui, o primeiro item, vamos arrastar isso, é empilhável
e conectá-lo aqui, como aqui, e dizer olá
aos pinos desconectados. Então, esse item é empilhável? E o nome é
igual ao do travesti? Isso significa que
na verdade é o mesmo item. E também só para
ter certeza de que vou clicar neste sinal aqui
e adicionar outro. E aqui embaixo,
também certificando-se de que o compartimento de itens de arrastar também
seja empilhável, escondendo pinos desconectados aqui. Agora, o que estamos dizendo aqui estamos verificando se
o nome é o mesmo no novo
slot e no slot. Então, estamos verificando se é
o mesmo item e também se esse
item é empilhável. E se for,
vamos fazer uma filial. E vamos conectá-lo e
dizer que sim, ele é empilhável. Agora, há outra coisa
que precisamos verificar. E se arrastarmos esse item do
compartimento de medicamentos para o novo compartimento? E o novo slot está vazio. Mas o enredo ainda é empilhável. No momento, estamos verificando
se tem o mesmo nome
, não terá o mesmo nome. Se esse espaço aqui estiver vazio
e não tiver um item, precisamos
verificar isso também. Então,
o que vamos fazer é tirar essa quantidade de itens do
novo espaço para o qual estamos arrastando e dizer igual. Então, se isso for igual a zero, significa que não há itens
dentro desse slot. No entanto, este
item de slot para drogas é empilhável. Então, partindo daqui
e dizendo “booleano”, se é zero e as drogas, esse item é empilhável,
então, na verdade,
também é empilhável. Essa pode ser verdadeira e
essa pode ser verdadeira. Então, para fazer isso, podemos arrastar daqui e dizer OR booleano e, em seguida,
conectar esse aqui e conectar
este aqui. Então, agora estamos dizendo que se isso
é verdade ou se isso é verdade, então podemos dizer
que o item é empilhável. E aqui, no falso, vamos
configurá-lo como nenhum empilhável e vamos
usá-lo um pouco mais tarde. E então vamos criar
uma nova função que usaremos
na próxima lição. Portanto, não se
preocupe com isso agora. Mas vamos chamar isso de
atualização de slots de inventário. E vamos voltar
ao gráfico de eventos,
na verdade, ao UNDRIP aqui. E vamos arrastar este para
atualizar os slots de inventário. Vamos apenas conectá-lo
com os dois aqui. E lembre-se aqui de que quando você arrasta,
então, ao detectar o arrasto
que
criamos anteriormente, dissemos que
a
interface principal estava visível, a tela principal,
precisamos nos lembrar ajustá-la também
para nenhuma falha testável. Eles copiarão
esse código, voltarão para o Andhra e vamos colá-lo aqui. E menos conectado também conecte este e defina
este como verdadeiro. Agora também precisamos nos lembrar mudar este para um festival
não oculto. E também temos que
voltar para a interface principal, esta aqui, e
ir para o gráfico, ir para o UNDRIP. E também aqui, quando o
colocamos no topo do menu I, precisamos configurá-lo
novamente como não testável. Porque esse aqui
e o compartimento de inventário, este só funciona
se o colocarmos em cima de outro espaço de
inventário. Este ano, também o
trocaremos novamente quando
terminarmos de colocar o item
em cima da tela. Então, em vez desse
controle de placa, Ellis excluiu. Vamos pegar o Player Pawn, pegar o controle do jogador
a partir desta jogada. E agora podemos conectá-lo aqui e simplesmente enviar
o código dessa forma, conectá-los e lembrar pegar isso e
configurá-lo como nada testável. Então, agora estamos mudando e
mudando isso de volta também. Ok, agora terminamos
com a função de desembrulhar. Estamos apenas
verificando se o item que estamos arrastando é
empilhável ou não. E isso é algo
que usaremos
na próxima lição quando
criarmos essa função aqui. Então, vamos salvar tudo e passar
para a próxima lição.
48. 8.04 Atualizando as fendas de inventário: Olá e bem vindo de volta. Então, agora vamos fazer essa
atualização de slots de inventário. Então, aqui, para começar, deixe-me arrastar as novas lesmas
e arrastar o slot aqui. Primeiro, estamos verificando se
não estamos arrastando o item
para o mesmo lugar. Então, se eu clicar em Jogar e acabei de
desenhar, pegue um item aqui. Se eu arrastá-lo, só
quero executar o código. Se eu estiver arrastando-o
até esse espaço de inventário, não
quero executar
o código se eu estiver arrastando e soltando-o
no mesmo espaço de inventário. Então, primeiro, estamos verificando se o novo índice de slides dos
slots de inventário é igual ao antigo, o que significa que simplesmente o
colocamos no mesmo espaço de inventário. Se isso for verdade, não
queremos fazer nada, na verdade, apenas para minha própria leitura. Vou tentar a
partir disso e dizer
não e escolher isso NÃO booleano. Portanto, se não for o
mesmo índice de slots, prosseguiremos
e executaremos o código. No entanto, se for falso, se for o mesmo índice de slots, não
queremos fazer nada. Posteriormente,
perguntaremos se o item é
empilhável ou não. Porque se for empilhável, vamos
adicioná-los juntos. Se eles não forem empilháveis, vamos apenas
trocá-los entre si. Então, primeiro vamos descer aqui. Digamos que o item não
seja empilhável. O que acontece? Vamos pegar este, atualizar,
arrastar os slots e atualizar o novo boletim informativo
e o slide de medicamentos. E vamos conectá-los aqui
e conectá-los assim. Então, para o novo slot, lembre-se de que estamos
pegando
o item do compartimento do motorista e colocando-o em cima
do novo slot. Então, o novo item do slot é o item arrastado aqui
do slot direto. Então, vamos
pegar o slot de arrastar. Vamos pegar o item
aqui e soltá-lo, assim
como a quantidade do item. Quanto ao slot direto, precisamos colocar o item do novo slot,
o lodo seco. Então, estamos alternando
entre esses dois. Estamos pegando o item do compartimento de drogas e colocando-o no novo compartimento. E então precisamos
do novo item do slot e o colocamos no slot de rascunhos. Agora, acabamos de atualizar
o novo item do slot. Portanto, é impossível
obter essas informações. Agora não podemos simplesmente pegar
isso e fazer assim, porque aqui acabamos de
atualizar este item. Este item aqui é, na verdade
, agora esse item aqui. Então, não podemos fazer isso assim. O que podemos fazer é
simplesmente pegar esse novo espaço. E antes de fazermos isso aqui, vamos clicar com o botão direito do mouse remotamente
em uma variável local. Uma variável local é apenas
uma variável temporária. Chame isso de novo item de caça-níqueis. E podemos clicar com o
botão direito do mouse nesta, promover para
variável local e chamar essa nova quantidade de itens de slot. Agora vamos conectá-los juntos e nos conectar
com este também. E agora você pode usar essas
variáveis para adicioná-las aqui. Então, o novo item do slot e
, em seguida, a quantidade do novo item do slot. Tudo bem, então agora isso está correto. Na verdade, você pode simplesmente jogar e ver se isso funciona. Então, isso é se o item não
for empilhável. Então, vamos clicar em jogar. E eu vou alaúdar
isso aqui, isso aqui. E se eu apenas trocar
esses dois juntos, você pode ver que agora eles
são comutáveis. Se eu os arrastar até aqui, isso também funciona. Ok, então tudo funciona aqui e eu também posso
trocá-los juntos. Isso é bom. Eu posso largá-lo. Eu posso trocá-los e
descartar isso também. Você pode ver que funciona perfeitamente. Agora. No entanto, ele
não funciona com os itens empilháveis porque não
fizemos esse código. Então você pode ver aqui
que o item é empilhável. Nada está acontecendo porque não
fizemos nada aqui. Então isso está funcionando agora, vamos nos mudar para cá. Portanto, antes de fazermos qualquer coisa
com os itens empilháveis, queremos somar as
quantidades. Como você pode imaginar, se
você tem quatro bananas
no primeiro espaço e cinco bananas no segundo espaço, precisamos adicionar quatro
mais cinco porque estamos arrastando o
item empilhável para o próximo. Então, vamos pegar a vaga de drogas e também a nova vaga aqui. Agora eu os tenho e vamos pegar a quantidade do novo slot. Vamos adicioná-lo
ao slot direto. E agora acabamos de criar
essa nova quantidade de itens de caça-níqueis. Então, deixe-me
arrastá-lo até aqui e colocá-lo aqui,
conectado aqui. E a próxima coisa que
precisamos verificar
é a quantidade desse novo item. É maior do que o tamanho máximo da pilha
desse item no novo slot? Então, vamos parar aqui e verificar
se isso é maior do que o tamanho máximo da pilha,
porque não queremos
adicionar a coisa toda se ela ficar maior que
o tamanho máximo da pilha Vamos arrastar aqui e
criar um booleano. Então, digamos primeiro: Não, não
é maior do que
o tamanho máximo da pilha. Então, vamos apenas adicionar, por exemplo, para bananas junto
com cinco bananas. Então isso é falso. Não é maior do que
o tamanho máximo da pilha. Vamos arrastar o compartimento de atualização do
novo item e arrastar o slot de atualização, arrastado e
conectá-los. Então, para o novo slot,
novamente, assim como antes, o novo item do slot é
apenas aquele
do slot direto, porque
acabamos de arrastá-lo até lá. Então, pegando isso, conectando-o e solicitando a
nova quantidade do item, acabamos de
adicioná-los aqui. Então você pode. Pegue isso, conecte-o
e crie nós de redirecionamento. E agora podemos, para o
falso conectado aqui, na verdade, em vez de fazer isso, podemos
realmente usar esse. Vamos deletar isso
e pegar essa aqui para que possamos
usar essa variável que
acabamos de criar. É um pouco
mais fácil usar
algo assim. E agora, para o slot direto de
atualização, agora acabamos de adicionar o item de slot direto em
cima do novo slot. Então, ainda mais, na verdade, não
temos mais um item. Vamos deixar que seja assim, a quantidade zero e o item serão excluídos
do slot antigo. Ok, e se o item que
estamos colocando em cima
do novo slot conseguir
mais do que o
tamanho máximo da pilha desse item. Agora vamos copiar isso novamente
e colá-lo aqui. Então, novamente,
para o boletim informativo é como se o
item fosse apenas o item do compartimento de medicamentos
e a quantidade do novo slot exatamente do tamanho máximo da pilha porque
não pode ser maior do que isso. Quanto à vaga de medicamentos aqui, o item de lodo seco
é exatamente esse de novo. Então, eu vou copiar
isso, colar aqui. Agora, para a nova quantidade de itens, precisamos subtrair essa nova quantidade
do tamanho máximo da pilha. Então, vamos pegar a quantidade aqui, digamos menos o tamanho
máximo da pilha. Então, digamos, por exemplo, que a vaga para drogas fosse dez e a nova vaga fosse
quatro, o que nos dará 14. No entanto, para as bananas, o tamanho máximo da pilha é dez, então vai
dizer 14 menos dez. Isso nos dá quatro. Lembre-se de que acabamos de arrastar
dez para o novo slot. Então, temos os quatro que
sobram no lodo seco. Então, vamos
dizer menos aqui, e eu vou criar algumas notas de redirecionamento para
que fique um pouco mais claro. E vamos conectar essa verdade
aqui com esta, e agora ela deve funcionar. Então, vamos compilar tudo. Vamos ver se temos algum bug. Vamos clicar em Jogar. Deixe-me ir em frente e
saquear alguns dos itens. E agora eu tenho 10.4. Se eu arrastar um novo slot para eles,
ele realmente desaparece. Então, eu realmente preciso
ver o que está acontecendo. Deixe-me voltar aqui e
clicar na atualização
do novo slot e
verificar se
está correto e se
parece bom para mim. Então, agora, se voltarmos
para Andhra e
voltarmos aos
slides de atualização do inventário, o IF funcionará aqui. E eu posso ver que, na verdade
, o erro está aqui. Precisamos do tamanho máximo da pilha
dos slots drogados. Porque não precisamos do tamanho máximo da pilha
do novo slot. Porque se eu arrastar aqui, você verá que o novo slide
agora tem zeros. Portanto, o tamanho máximo da pilha
é zero porque não
há nenhum item que
seja realmente o dinheiro. Então, em vez de aqui,
vamos conectá-lo, conectar este e criar notas de redirecionamento. Então, parece bom. Agora vamos compilar
e deve funcionar. Isso foi apenas um pequeno erro. Vamos saquear tudo de novo. E agora temos o tamanho
correto do Max Stack. Então, vamos arrastá-lo
para o próximo e agora funciona. E se eu arrastar esse
dez para o quatro, deveria dizer 10,4. Então, isso deve alternar entre
si desse jeito. Então funciona agora que os itens
empilháveis estão funcionando. E se eu deixar cair aqui, eu deixo cair essa, eu as carrego. Cfi, vamos, deixe-me
realmente desenhar esse, vou coletar isso,
colocá-lo aqui, ele deve preencher esse
espaço aqui primeiro. Em seguida, ele colocará as
coisas que estão mais aqui. Isso os colocará
no primeiro slot. Ok, então tudo
está funcionando agora. Estamos atualizando tudo. Vou
colocar todos os itens no chão e vamos
testar o produto final.
49. 8.05 Adicionando efeitos sonoros: Para torná-lo um pouco
mais interessante antes de terminarmos este curso, vamos adicionar
alguns efeitos sonoros. Então, na pasta de áudio, incluí alguns efeitos
sonoros. É claro que podemos adicionar mais, mas vamos experimentá-los por enquanto. Então, esses efeitos sonoros, você pode clicar no
primeiro e segurar a tecla Shift clicar no
último e clicar com o botão direito do mouse. Você vai em frente e cria
várias filas. Então, estamos criando
essas pistas sonoras. Vou renomeá-los. Por exemplo, eu posso renomear
o primeiro. Em vez de chamar
uma fila aqui, vou chamá-la
de SC para sinalização sonora
e, em seguida, o nome
do efeito sonoro. Agora eu renomeei todos eles, então veja, para
começar, a sugestão sonora. E eu posso tocá-los agora, mas eles são muito altos. Acho que isso será
permitido para você. Então, antes de fazer isso, vou abrir o primeiro. E agora, para isso aqui em cima, para o multiplicador de volume, você pode reduzir o som. Esta é a parte inferior, Hoover. Então, deixe-me escrever 0,5
e jogar a fila. E talvez 0,4 seja melhor. Vamos fechá-lo. Vamos abrir o próximo
botão, digamos 0,4. Eu acho que isso está bem. Agora, para o
inventário perdido, vamos tentar 0,4. Isso é bom. Novamente,
optando pelo item de entrega, talvez 0,5 para
este, isso é muito silencioso e os
luditas são 0,50, 0,4. Eu acho que é melhor. Ok. E o último,
o inventário aberto. Vamos tentar 0,4 como muito alto. 0,3. Eu acho que 0,25, talvez, algo assim. Vamos salvar tudo agora que
reduzimos o som. Agora, um pequeno truque se você
quiser sons diferentes. Então, agora você pode ver que
isso é o que parece. Mas se você quiser que ele
soe um
pouco diferente toda
vez que você abre, ele pode simplesmente arrastar daqui e
escrever o modulador aqui embaixo, esse modulador
e conectado aqui. Então agora você tem um
modulador no meio. E você pode dizer que o mínimo, que é 0,9, e o tom
máximo é 1,1. E se você tocar
sempre que puder ouvir, é um
efeito sonoro diferente. Toda vez. Ele muda ligeiramente
no tom para cima e para baixo. Então, depende de você, por exemplo, os sons do alaúde, o item de lançamento. Você pode torná-los um pouco
diferentes toda vez que carrega. Então, tudo bem por enquanto. Então, vamos adicionar o botão de passar o mouse
e o botão para começar. Então, vamos para a interface do usuário. E primeiro ano da
categoria. Vamos clicar nele. E aqui, vamos clicar
na categoria do botão. Você pode ir até
aqui e você tem um som
deprimido e
o som flutuante. Eles clicarão aqui,
selecionando o botão passar mouse e
pressionar o botão para este, vamos compilar e
salvar o que podemos fazer. Também podemos adicioná-lo aos botões
de inventário. Então, clicando na interface principal, se clicarmos nesse botão, podemos adicionar a mesma coisa aqui. Pressione o botão, passe o mouse. Vamos compilar e salvar
tudo. Você pode experimentá-lo. Você pode tentar clicar em Jogar e ver o que acontece
aqui para o cliente. Se eu clicar em ocupado,
agora está funcionando. Portanto, é um pouco
mais interessante do que nenhum som. Bem, vamos fechá-lo e a próxima coisa que precisamos adicionar é fechar
o inventário e abrir o inventário que
vamos ver os planos. E vamos tentar primeiro. Temos aqui e o jogador, estamos abrindo e
fechando o inventário. Então, podemos colocá-lo aqui, ou podemos jogá-lo dentro
do controle do player. Se formos até o controle
do player e você estiver livre para fazer o que quiser aqui, a decisão
é sua. Também podemos nos relacionar aqui
quando você abre o widget, o
inventário de abertura ou, quando
fechamos o widget,
fechamos o inventário. Portanto, ele pode fazer
isso aqui ou ali. Deixe-me tocá-lo aqui
no player, arraste daqui, diga o som atrasado para D e também copie e cole
aqui embaixo. Então, aqui estamos fechando
o inventário. Então, clicando aqui e
selecionando o estoque mais baixo. E aqui embaixo estamos
abrindo o inventário. Então, vou selecionar
Abrir inventário e vamos incluí-los aqui
no comentário também. Ok, vamos compilar e
clicar em Jogar e ver o que acontece. Então, se eu clicar nele para
abrir o inventário e clicar em OK para
fechá-lo novamente. Ok, agora isso também funciona. A última coisa que
falta aqui
no áudio é o item de soltar e o
item de alaúde. Para o item de cargas, estamos
pressionando E para saquear o ISM e ele passará pelo servidor e será adicionado ao inventário. No entanto, ainda não
carregamos aqui. Então, vamos até o
inventário e
vamos jogar aqui
no loop, completo. Quando destruímos o item, nós o carregamos aqui. Vamos sair daqui e
dizer reproduzir som para D. E o que queremos
tocar é como o mencionado. Portanto, é um item obsceno. E também vamos copiar
e colar aqui. Também estamos carregando aqui. Tudo bem, então o som
final que está faltando aqui é o item de lançamento. Então, para o item de entrega,
se você se lembra, vamos para a interface do usuário e
vamos para o WB principal. Dentro daqui, temos essa função de Andhra
ou descartar o item. E temos esse
único item
do inventário e ele
acaba, se você se lembrar,
no controle do jogador, no controle do jogador responderá da mesma forma
quando o derrubarmos. No entanto, se você jogar aqui, lembre-se de que este evento está
sendo executado no servidor. Portanto, ele nunca
passa pelo cliente. Portanto, se você adicionar um
som de reprodução para d aqui, ele não funcionará. O cliente não ouvirá. Então, vamos realmente fazer isso
dentro do WB principal aqui. Quando estivermos prontos
para entregar o item, vamos
soltar o item. Você pode até mesmo colocá-lo
aqui para atualizar a interface do usuário. Vamos jogar aqui antes de
fazermos essa última coisa. E lembre-se de selecionar
a sugestão sonora do item de descarte. E vamos compilar
e clicar em play. Então, agora, quando ando por aí,
aludi a um item. Abra o inventário que eu aludo. Ok, parece bom. E quando eu deixo cair o item, você também pode ouvir isso. É assim que você adiciona efeitos
sonoros. Obviamente, isso
só pode ser ouvido por você mesmo, porque, afinal, é
um inventário. E não queremos que
todos esses sons também
sejam ouvidos pela
outra camada. Então, agora tudo parece bom. E vamos seguir em frente.
50. 8.06 Testando o produto final: Tudo bem, agora
estamos prontos para testar o produto final e
ver se temos alguma caixa. Então, se clicarmos em
jogar aqui e agora é o servidor
e perguntarmos ao servidor, vou aludir a uma
arma e vou carregá-la. Estou carregando o próximo. Essa é a faca. Tudo está funcionando.
Eu posso movê-los e, se eu fizer alusão novamente
, eles serão carregados aqui. Então isso está funcionando corretamente? Simples assim,
vou perder uma poção e vou
pressionar aqui. E são três poções
no chão carregando essas 13 poções de resistência carregam
mais poções de resistência. Esse era um no chão. Olhando aqui, ele
colocará mais poções. Acho que o tamanho máximo da
pilha é dez para a poção e na verdade
seis para os quocientes. E agora você pode ver que eles
foram adicionados em cima de uma nova pilha. E eu posso manter isso como cinco, eu acredito, para as
manipulações. Então, ele vai
criar uma nova pilha. Então, tudo está
funcionando perfeitamente. Vou carregar as bananas. Esses funcionam como você sabe, nós os testamos
várias vezes desse jeito. Perfeito. Então, eles estão funcionando. Eu vou perder a carne. E você pode ver a carne. Este é, eu acho, seis peças. E, na verdade, não esse. Este tem seis peças,
então vai adicionar 5,1. E isso funciona. 5.1. Isso está correto. E agora você pode ver que
isso funciona perfeitamente. E se eu continuar
poluindo armas, bem, então tudo está
funcionando como deveria. Eu posso movê-los. Se eu mover peças que
não são empilháveis, elas não se
acumularão. Então, esses cinco estrangeiros, eu posso
trocá-los entre si e eu posso
deixá-los se eu quiser. Agora, como clientes, precisamos saber que
podemos fazer o mesmo. Então, clicando em Jogar,
este é o servidor. Então, voltando ao cliente, vou
minimizar isso um pouco. Indo até o cliente, pressionando um olho para
ver o inventário. Eu posso ver isso,
isso funciona muito bem. As carnes estão aqui na comida. Isso é ótimo. Vou fazer alusão a todas essas coisas e também está
funcionando perfeitamente. Agora, para o cliente, se eu cair, o servidor deve ser
capaz de vê-los. E eu posso ver isso,
esse declínio acabou de cair. Então esta é, se eu mencionei, são cinco poções. Então, se eu deixar
aqui, os itens podem, o cliente pode ver, e o cliente também pode carregar
esses cinco oceanos. Será empilhado aqui antes de
ser empilhado aqui. Ok, então a última coisa, vamos testá-la
entre dois clientes porque não queremos
a lógica do servidor, então ela também deve estar correta. Se dois clientes estiverem
juntos,
digamos, em um servidor dedicado. Então, vamos continuar como
esse primeiro cliente. Vamos saquear e deixar
cair essas cinco bananas. Eu também posso vê-los. E o novo cliente aqui
vai perdê-los. E essas são na verdade
cinco bananas, digamos que eu
as deixei aqui em vez disso. E eu posso vê-los
nos outros clientes. Portanto, tudo está funcionando bem tanto
para o cliente
quanto para o servidor. Era isso para o inventário. Espero que você tenha
gostado do curso. Foi muito divertido de fazer. Se você estiver interessado
em meus outros cursos, visite pixel helmet.com. Vou continuar lançando
cursos todos os meses. Então vá em frente e dê uma
olhada se quiser alguma ajuda. Também posso
ajudá-lo no meu site ou se você quiser se juntar ao
nosso servidor discord, isso
agradecerá por estar aqui e
nos vemos no próximo.