Acheter des améliorations

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Cela nous amène au dernier stade du game loop - acheter des améliorations. En permettant aux joueurs d'acheter des améliorations qui augmentent la taille de leur sac d'objets, ils peuvent récolter plus d'articles par voyage et gagner encore plus d'or.

Créer une boutique

Chaque boutique aura un bouton que les joueurs cliquent pour acheter un sac d'article plus grand. La boutique elle-même sera une partie avec un SurfaceGUI, un élément qui permet d'écrire du texte sur les parties.

Créer le signe

  1. Dans l'espace de travail, créez un nouveau modèle nommé Boutique.

  2. Dans la boutique, créez une nouvelle partie de bloc nommée BuyButton.

  3. Dans BuyButton, ajoutez une nouvelle interface utilisateur de surface en cliquant sur + et en faisant défiler vers interface utilisateur graphique.

  4. Dans la interface utilisateur graphiquede surface, ajoutez un nouveau TextLabel nommé BuyText. Une petite étiquette apparaîtra quelque part sur la pièce.

  5. En fonction de la façon dont la partie a été fabriquée, l'étiquette peut être ailleurs. Si vous ne voyez pas le texte sur le côté que vous voulez, allez dans la SurfaceGUI et trouvez la propriété Visage. Modifiez cette propriété jusqu'à ce que vous voyiez l'étiquette de texte.

Modifier texte du signe

En ce moment, la balise de texte est vraiment petite et difficile à voir pour les joueurs. Il faut l'agrandir.

  1. Dans les propriétés BuyText, cliquez sur la flèche à côté de Taille . Modifiez le Offset pour X (gauche et droite) et Y (haut et bas) à 0.

  2. Changez la échelle de X et Y à 0,5 pour faire un carré.

  3. Déplacez-vous dans les propriétés TextLabel et cliquez sur la flèche à gauche de AnchorPoint . Tapez 0.5 pour X et Y. Cela déplace une partie de votre étiquette hors de la vue, mais vous la positionnerez correctement à la prochaine.

  4. Faites défiler dans les propriétés et ouvrez Position . Modifiez la taille de X et Y pour 0.5 afin que la boîte soit centrée au milieu.

  5. Dans les propriétés BuyText, faites défiler vers le bas et modifiez Text par quelque chose de descriptif. Par instance: "Buy Larger Bag: 100 gold".

  6. Vérifiez TextScaled pour être sur . Ceci met automatiquement votre texte à l'échelle pour qu'il tienne dans la boîte de modélisation.

Ajout d'un détecteur de clics

Les joueurs achèteront des articles en cliquant sur la boutique plutôt que de simplement la toucher. Le script utilisera un détecteur de clics pour déterminer si un joueur a cliqué sur le panneau de la boutique. Cliqueurs détecteurs sont des objets qui permettent aux utilisateurs d'interagir avec quelque chose dans l'environnement, comme ouvrir une porte.

  1. Dans le bouton Acheter, ajoutez un ClickDetector.

  2. Dans BuyButton, ajoutez un nouveau script nommé BuyScript et donnez-lui un commenterdescriptif.

  3. Dans BuyScript, créez des variables pour stocker la partie du bouton et cliquez sur le détecteur.


    -- Permets aux joueurs de cliquer sur un bouton pour acheter une amélioration qui augmente les espaces
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Créer une nouvelle fonction nommée giveUpgrade() qui obtient un paramètre nommé player . La fonction met à jour les espaces d'un joueur chaque fois qu'il clique sur le bouton.


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. Après la fonction, vous pouvez connecter l'événement MouseClick du détecteur de clics à la fonction giveUpgrade().


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. Ajoutez une déclaration d'impression dans giveUpgrade() pour tester la fonction.


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Jouez votre projet. Cliquez sur le bouton et vérifiez que vous voyez le texte dans la fenêtre de sortie.

Conseils de débogage

Problème : Vous ne pouvez pas cliquer sur le bouton ou un curseur de souris n'apparaît pas sur le bouton.

  • Assurez-vous que l'objet ClickDetector est un enfant de la partie que vous essayez de cliquer.
  • Vérifiez que votre personnage est assez proche du bouton. Ou, assurez-vous que l'outil n'est pas équipé.

Acheter des améliorations

Avec un bouton fonctionnel, il est temps d'ajouter du code à giveUpgrade pour retirer l'or d'un joueur en échange d'un sac amélioré.

Ajouter des variables d'amélioration

Chaque amélioration aura deux variables : le coût de l'amélioration et le nombre d'espaces qu'elle a.

  1. Dans BuyScript, sous local clickDetector, créez deux variables :

    • newSpace : Nombre d'espaces supplémentaires qu'une amélioration ajoute lorsqu'elle est achetée.
    • upgradeCost : le coût d'une seule amélioration

    -- Variables pour la mise à amélioration
    local newSpaces = 10
    local upgradeCost = 100

Accorder des améliorations

Avant de vendre le joueur l'amélioration, vous devez vérifier s'il a assez d'argent. S'ils le font, vous ajouterez à leur montant maximum d'espaces.

  1. Dans giveUpgrade(), tapez les éléments suivants pour obtenir les statistiques du joueur afin que vous puissiez accéder à leurs variables d'or et d'espace.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Obtenez le classement du joueur pour obtenir d'autres IntValues
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Obtient l'argent et l'espace du joueur pour faire des modifications
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Après avoir écrit les variables pour les espaces, créez une if statement pour vérifier si la valeur de playerGold est plus ou égale au coût de mise à niveau.


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- Vérifie si le joueur a assez d'argent pour financer la mise à niveau
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. Dans la déclaration if, soustrayez le coût de l'amélioration du joueur à l'or du joueur.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Soustrayez le coût de l'itemdu montant du joueur
    playerGold.Value -= upgradeCost
    end
  4. Sur la prochaine ligne, ajoutez le nombre d'esaces actuels du joueur ainsi que les nouveaux espaces accordés par améliorationà niveau.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. Jouez votre projet et vérifiez le classement pour vérifier si la mise à niveau des espaces a fonctionné.

Conseils de débogage

À ce stade, les améliorations ne fonctionnent pas comme prévu, essayez l'une des suivantes ci-dessous.

  • Assurez-vous que tout dans le () de FindFirstChild() a des citations sur les deux côtés, comme **** .
  • Vérifiez que chaque chaîne dans FindFirstChild est exactement la même que le nom de IntValue dans le script PlayerSetup. Par exemple, si votre code utilise des rubis comme monnaie, vous devriez avoir FindFirstChild("Rubies") .
  • Assurez-vous que giveUpgrade() est au-dessus de clickDetector.MouseClick.

Compléter le script BuyScript

Une version finie du script peut être référencée ci-dessous.


-- Permets aux joueurs de cliquer sur un bouton pour acheter une amélioration qui augmente MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variables pour la mise à amélioration
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Obtenez le classement du joueur pour obtenir d'autres IntValues
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Obtient l'argent et l'espace du joueur pour faire des modifications
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Vérifie si le joueur a assez d'argent pour financer la mise à niveau
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Soustrayez le coût de l'itemdu montant du joueur
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)