Isso nos leva ao último estágio do ciclo de jogo - comprar melhorias.Permitindo que os jogadores comprem upgrades que aumentem o tamanho de sua bolsa de itens, eles podem coletar mais itens por viagem e ganhar ainda mais ouro.
Criar uma comprar
Cada loja terá um botão que os jogadores clicarão para comprar uma bolsa de item maior.A própria loja será uma parte com uma SurfaceGUI, um item que permite que texto seja escrito em peças.
Crie a assinatura
No espaço de Workspace, crie um novo modelo chamado Loja.
Na Loja, crie uma nova parte de bloco chamada BuyButton.
No BuyButton, adicione uma nova GUI de superfície clicando no + e rolando para a Interface gráfica do usuário.
Na Interface gráfica do usuáriosuperfície, adicione um novo rótulo de texto chamado BuyText. Um pequeno rótulo aparecerá em algum lugar da peça.
Dependendo de como a peça foi feita, o rótulo pode estar em outro lugar.Se você não vê o texto no lado que deseja, vá para o SurfaceGUI e encontre a propriedade Face.Altere essa propriedade até ver o etiqueta / rótulode texto.
Altere o texto do sinal
No momento, o TextLabel é muito pequeno e difícil de ver para os jogadores. Precisa ser escalado.
Nas propriedades de Compra de Texto, clique na seta ao lado de Tamanho . Mude o Deslocamento para X (esquerda e direita) e Y (para cima e para baixo) para 0.
Altere a escala de X e Y para 0.5 para fazer um quadrado.
Rolagem para cima nas propriedades do TextLabel e clique na seta à esquerda de Ponto de Ancoragem .Digite 0.5 para X e Y.Isso move parte de sua etiqueta para fora de vista, mas você a posicionará corretamente na próxima.
Desça na propriedade e abra Posição . Mude o tamanho de X e Y para 0,5 para que a caixa seja centrada no meio.
Nas propriedades de Texto de Compra, desça e altere Texto para algo descritivo. Por instância: "Buy Larger Bag: 100 gold" .
Verifique TextScaled para ser em . Isso escala automaticamente seu texto para que ele se encaixe na caixa.
Adicione um detector de cliques
Os jogadores comprarão itens clicando na loja em vez de apenas tocá-la.O script usará um detector de cliques para dizer se um jogador clicou no sinal da loja. Detectores de Clique são objetos que permitem que os usuários interajam com algo no ambiente, como abrir uma porta.
No Botão de Comprar, adicione um Detector de Clique.
No BuyButton, adicione um novo script chamado BuyScript e dê-lhe um comentardescritivo.
No BuyScript, crie variáveis para armazenar a parte do botão e o detector de cliques.
-- Permita que os jogadores cliquem em um botão para comprar uma atualização que aumente os Espaçoslocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorCrie uma nova função chamada giveUpgrade() que recebe um parâmetro chamado player .A função atualizará os espaços de um jogador sempre que clicar no botão.
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endDepois da função, digite conectar o evento do detector de cliques MouseClick da função giveUpgrade() .
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)Adicione uma declaração de impressão em giveUpgrade() para testar a função.
local function giveUpgrade(player)print("Someone clicked the button.")endJogue o seu projeto. Clique no botão e verifique se você vê o texto na janela de Saída.
Dicas de solução de problemas
Problema: Você não pode clicar no botão ou o cursor do mouse não aparece no botão.
- Certifique-se de que o objeto ClickDetector seja um filho da peça que você está tentando clicar.
- Verifique se o seu personagem está perto o suficiente do botão. Ou, garanta que a ferramenta não está equipada.
Compre melhorias
Com um botão de trabalho, é hora de adicionar código ao giveUpgrade para remover o ouro de um jogador em troca de uma bolsa aprimorada.
Adicionar variáveis de atualização
Cada upgrade terá duas variáveis: o custo da atualização e quantos espaços ela tem.
No BuyScript, sob local clickDetector, crie duas variáveis:
- newSpace : Quantos espaços uma atualização adiciona quando comprada.
- upgradeCost : O custo de uma única upgrade / melhoria
-- Variáveis para a upgrade / melhorialocal newSpaces = 10local upgradeCost = 100
Conceder melhorias
Antes de vender o jogador a upgrade / melhoria, você precisa verificar se eles têm dinheiro suficiente. Se eles fizerem, você adicionará à sua quantidade máxima de espaços.
Em giveUpgrade() , digite o seguinte abaixo para obter as estatísticas do jogador para que você possa acessar suas variáveis de ouro e espaço.
local function giveUpgrade(player)print("Someone clicked the button")-- Obtém a tabela de classificação do jogador para obter outros IntValueslocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Obtém o dinheiro e os espaços do jogador para fazer alteraçõeslocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendDepois de escrever as variáveis para espaços, crie uma declaração if para se o valor de playerGold for maior ou igual ao custo de atualização.
local function giveUpgrade(player)local playerStats = player:FindFirstChild("leaderstats")if playerStats thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- Verifica se o jogador tem dinheiro suficiente para pagar a upgrade / melhoriaif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendNa declaração if, subtraia o custo da upgrade / melhoriado ouro do jogador.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- Subtraia o custo do item do dinheiro do jogadorplayerGold.Value -= upgradeCostendNa próxima linha, adicione o número dos espaços atuais do jogador junto com os novos espaços concedidos por upgrade / melhoria.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendJogue seu projeto e verifique a tabela de classificação para verificar se a atualização dos espaços funcionou.
Dicas de solução de problemas
Neste ponto, as atualizações não funcionam como pretendido, tente uma das seguintes abaixo.
- Certifique-se de que qualquer coisa no de tem citações em ambos os lados, como ambos .
- Verifique se cada string em FindFirstChild é exatamente igual ao nome daquele IntValue no script PlayerSetup.Por exemplo, se o seu código usa Rubis como moeda, você deve ter FindFirstChild("Rubies") .
- Certifique-se de que giveUpgrade() está acima de clickDetector.MouseClick.
Complete o script BuyScript
Uma versão final do script pode ser referenciada abaixo.
-- Deixe os jogadores clicarem em um botão para comprar uma atualização que aumenta os Espaços Máximos
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variáveis para a upgrade / melhoria
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Obtém a tabela de classificação do jogador para obter outros IntValues
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Obtém o dinheiro e os espaços do jogador para fazer alterações
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Verifica se o jogador tem dinheiro suficiente para pagar a upgrade / melhoria
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Subtraia o custo do item do dinheiro do jogador
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)