Esto nos lleva a la última etapa del ciclo de juego - comprar mejoras. Al permitir que los jugadores compren mejoras que aumentan el tamaño de su bolsa de artículos, pueden recolectar más artículos por viaje y ganar aún más oro.
Crear una tienda
Cada tienda tendrá un botón que los jugadores hagan clic para comprar una bolsa de artículos más grande. La tienda misma será una parte con un GUI de superficie, un artículo que permite escribir texto en las piezas.
Creando la firma
En el espacio de trabajo, crea un nuevo modelo llamado Tienda.
En la Tienda, crea una nueva parte de bloque llamada BuyButton.
En BuyButton, agrega una nueva GUI de superficie haciendo clic en + y desplazándose hacia Interfaz gráfica (o GUI).
En la interfaz de usuario en la superficie, agregue un nuevo TextLabel llamado BuyText. Un pequeño etiqueta aparecerá en algún lugar de la parte.
Dependiendo de cómo se haya fabricado la parte, la etiqueta puede estar en otro lugar. Si no ves el texto en el lado que quieres, ve a la interfaz de usuario y encuentra la propiedad Cara. Cambia esa propiedad hasta que veas el texto de etiqueta.
Cambiar el texto de la firma
En este momento, la TextLabel es realmente pequeña y difícil de ver para los jugadores. Necesita ser escalada.
En las propiedades de ComprarTexto, haz clic en la flecha junto a Tamaño . Cambia el Offset por X (izquierda y derecha) y Y (arriba y abajo) a 0.
Cambia el escala de X y Y a 0.5 para hacer un cuadrado.
Desplácese hacia arriba en las propiedades de TextLabel y haga clic en la flecha izquierda de AnchorPoint . Escribe 0.5 para X y Y. Esto mueve parte de tu etiqueta fuera de la vista, pero lo posicionarás correctamente la próxima vez.
Desplázate hacia abajo en las propiedades y abre Posición . Cambia el tamaño de X y Y a 0.5 para que la caja esté centrada en el medio.
En las propiedades de ComprarTexto, desplácese hacia abajo y cambie Texto a algo descriptivo. Por instancia: "Buy Larger Bag: 100 gold" .
Compruebe TextScaled para estar en . Esto escala automáticamente su texto para que encaje en la caja delimitadora.
Agregar un Detector de Clic
Los jugadores comprarán artículos haciendo clic en la tienda en lugar de simplemente tocarla. El script usará un detector de clics para decir si un jugador ha hecho clic en la tienda. ClickDetectors son objetos que permiten que los usuarios interactúen con algo en el entorno, ambiente, como abrir una puerta.
En el Botón de Comprar, añade un ClickDetector.
En BuyButton, agrega un nuevo script llamado BuyScript y dale un hacer un comentariodescriptivo.
En BuyScript, crea variables para almacenar la parte del botón y hacer clic en el detector.
-- Hagamos que los jugadores hagan clic en un botón para comprar una mejora que aumenta los espacioslocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorCrea una nueva función llamada giveUpgrade() que obtiene un parámetro llamado player . La función actualizará los espacios de un jugador cada vez que haga clic en el botón.
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endDespués de la función, escriba conectar el evento del detector de clics a la función giveUpgrade().
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)Agregue una declaración de impresión en giveUpgrade() para probar la función.
local function giveUpgrade(player)print("Someone clicked the button.")endJuega tu proyecto. Haz clic en el botón y asegúrate de que veas el texto en la ventana de salida.
Consejos de solución de problemas
Problema: No puedes hacer clic en el botón o un cursor de mouse no aparece en el botón.
- Asegúrese de que el objeto ClickDetector sea un hijo de la parte que está tratando de hacer clic en.
- Asegúrese de que su personaje esté lo suficientemente cerca del botón. O, asegúrese de que la herramienta no esté equipada.
Comprando mejoras
Con un botón que funciona, es hora de agregar código a giveUpgrade para eliminar el oro de un jugador a cambio de una bolsa mejorada.
Agregar variables de mejora
Cada mejora tendrá dos variables: el costo de la mejora y cuántos espacios tiene.
En BuyScript, bajo local clickDetector, crea dos variables:
- newSpace : Cuántos espacios agrega una mejora al comprar.
- upgradeCost : El costo de una sola mejora
-- variables para la mejoralocal newSpaces = 10local upgradeCost = 100
Otorgando Mejoras
Antes de vender el jugador la mejora, debes verificar si tiene suficiente dinero. Si lo hace, agregarás a su cantidad máxima de espacios.
En giveUpgrade() , escribe lo siguiente para obtener las estadísticas del jugador para que puedas acceder a sus variables de oro y espacios.
local function giveUpgrade(player)print("Someone clicked the button")-- Obtiene la tabla de clasificación del jugador para obtener otros IntValueslocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Obtiene el dinero y los espacios del jugador para hacer cambioslocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendDespués de escribir las variables para espacios, crea una declaración if para si el valor de playerGold es más o igual que el costo de la mejora.
local function giveUpgrade(player)local playerStats = player:FindFirstChild("leaderstats")if playerStats thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- Comprueba si el jugador tiene suficiente dinero para permitirse la mejoraif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendEn la declaración if, resta el costo de la mejoradel oro del jugador.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- Sustrar el costo del objetodel dinero del jugadorplayerGold.Value -= upgradeCostendEn la siguiente línea, agregue el número de los espacios actuales del jugador, junto con los espacios nuevos otorgados por mejora.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendJuega tu proyecto y revisa la tabla de clasificación para asegurarte de que la mejora de espacios funcionó.
Consejos de solución de problemas
En este punto, las mejoras no funcionan como se esperaba, intenta uno de las siguientes.
- Asegúrese de que cualquier cosa en el () de FindFirstChild() tiene citas en ambos lados, como “leaderstats” .
- Asegúrese de que cada cadena en FindFirstChild coincida exactamente con el nombre de ese IntValue en el script PlayerSetup. Por ejemplo, si su código usa Rubíes como moneda, debería tener FindFirstChild("Rubies") .
- Asegúrese de que giveUpgrade() esté por encima de clickDetector.MouseClick .
Completa el script de BuyScript
Una versión terminada del script se puede referir a continuación.
-- Hagamos que los jugadores hagan clic en un botón para comprar una mejora que aumenta MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- variables para la mejora
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Obtiene la tabla de clasificación del jugador para obtener otros IntValues
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Obtiene el dinero y los espacios del jugador para hacer cambios
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Comprueba si el jugador tiene suficiente dinero para permitirse la mejora
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Sustrar el costo del objetodel dinero del jugador
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)