Acheter des mises à niveau

*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 à la dernière étape du cycle de jeu - l'achat d'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'objets par voyage et gagner encore plus d'or.

Créer une boutique

Chaque boutique aura un bouton que les joueurs cliqueront pour acheter un plus grand sac d'objets.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 le bouton d'achat, ajoutez une nouvelle interface utilisateur de surface en cliquant sur + et en faisant défiler vers l'interface utilisateur graphique.

  4. Dans l'interface utilisateur graphiquede surface, ajoutez une nouvelle étiquette de texte nommée BuyText. Une petite étiquette apparaîtra quelque part sur la partie.

  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 le SurfaceGUI et trouvez la propriété Visage.Modifiez cette propriété jusqu'à ce que vous voyez l'étiquette de texte.

Modifier le texte du signe

En ce moment, le TextLabel est vraiment petit et difficile à voir pour les joueurs. Il doit être augmenté.

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

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

  3. Faites défiler vers le haut dans les propriétés TextLabel et cliquez sur la flèche à gauche de AnchorPoint .Saisissez 0,5 pour X et Y.Cela déplace une partie de votre étiquette hors de vue, mais vous la positionnerez correctement ensuite.

  4. Faites défiler vers le bas dans les propriétés et ouvrez Position . Modifiez la taille de X et Y à 0,5 pour que la boîte soit centrée au milieu.

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

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

Ajouter 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 indiquer si un joueur a cliqué sur le panneau de la boutique. Les détecteurs de clics sont des objets qui permettent aux utilisateurs d'interagir avec quelque chose dans l'environnement, comme l'ouverture d'une porte.

  1. Dans le bouton d'achat, ajoutez un détecteur de clics.

  2. Dans le bouton d'achat, ajoutez un nouveau script nommé BuyScript et donnez-lui un commenterdescriptif.

  3. Dans BuyScript, créez des variables pour stocker la partie bouton et le détecteur de clics.


    -- Permettons aux joueurs de cliquer sur un bouton pour acheter une mise à niveau qui augmente les espaces
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Créez une nouvelle fonction nommée giveUpgrade() qui obtient un paramètre nommé player.La fonction met à niveau 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, saisissez l'événement connect du détecteur de clics à la fonction .


    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épannage

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

  • Assurez-vous que l'objet ClickDetector est un enfant de la partie sur laquelle 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 mises à niveau

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

Ajouter des variables d'amélioration

Chaque mise à niveau aura deux variables : le coût de la mise à niveau et le nombre d'espaces qu'elle a.

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

    • newSpace : Combien d'espaces une mise à niveau ajoute lorsqu'elle est achetée.
    • upgradeCost : Le coût d'une seule mise à amélioration

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

Accorder des améliorations

Avant de vendre le joueur la mise à niveau, vous devez vérifier s'ils ont assez d'argent. S'ils le font, vous ajouterez à leur quantité maximale d'espaces.

  1. Dans giveUpgrade(), saisissez ce qui suit pour obtenir les statistiques du joueur afin que vous puissiez accéder à ses variables d'or et d'espace.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Obtient 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 déclaration if pour si la valeur de playerGold est supérieure 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 s'offrir la mise à niveau
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. Dans la déclaration if, soustraisez le coût de la améliorationà niveau du or du joueur.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Soustraire le coût de l'itemdu argent du joueur
    playerGold.Value -= upgradeCost
    end
  4. Sur la ligne suivante, ajoutez le nombre des espaces actuels du joueur ainsi que les nouveaux espaces accordés par mise à 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épannage

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

  • Assurez-vous que tout dans le de 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 cette valeur IntValue dans le script PlayerSetup.Par exemple, si votre code utilise des rubis comme argent, vous devriez avoir FindFirstChild("Rubies") .
  • Assurez-vous que giveUpgrade() est au-dessus de clickDetector.MouseClick.

Terminer le script BuyScript

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


-- Permettons aux joueurs de cliquer sur un bouton pour acheter une mise à niveau 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")
-- Obtient 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 s'offrir la mise à niveau
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Soustraire le coût de l'itemdu argent du joueur
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)