Upgrades kaufen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Das bringt uns zum letzten Schritt des Spielschleifen - dem Kauf von Upgrades.Durch das Erlauben von Spielern, Upgrades zu kaufen, die die Größe ihrer Artikeltasche erhöhen, können sie mehr Artikel pro Ausflug ernten und noch mehr Gold verdienen.

Erstelle einen kaufen

Jeder Shop wird eine Schaltfläche haben, die Spieler klicken, um eine größere Artikeltasche zu kaufen.Der Shop selbst wird ein Teil mit einer SurfaceGUI sein, einem Element, das es ermöglicht, Text auf Teile zu schreiben.

Erstelle das Schild

  1. Erstellen Sie im Arbeitsbereich ein neues Modell mit dem Namen Shop.

  2. Im Shop erstelle ein neues Blockteil mit dem Namen Kauf-Button.

  3. Füge in BuyButton eine neue Oberflächen-GUI hinzu, indem du auf + klickst und zum grafische Benutzeroberflächescrollst.

  4. Füge in der grafische Benutzeroberflächeein neues TextLabel namens BuyText hinzu. Ein kleines Label wird irgendwo auf dem Teil erscheinen.

  5. Abhängig davon, wie das Teil hergestellt wurde, kann das Etikett an anderer Stelle sein.Wenn du den Text auf der Seite nicht siehst, die du möchtest, gehe in die SurfaceGUI und finde die Eigenschaft Gesicht.Ändere diese Eigenschaft, bis du das Beschriftungsiehst.

Ändere den Zeichentext

Im Moment ist das TextLabel sehr klein und schwer für Spieler zu sehen. Es muss skaliert werden.

  1. Klicken Sie in den Eigenschaften von Kauftext auf den Pfeil neben Größe . Ändern Sie den Versatz für X (links und rechts) und Y (oben und unten) auf 0.

  2. Ändere die Skala von X und Y auf 0,5, um einen Quadrat zu machen.

  3. Scrollen Sie in den TextLabel-Eigenschaften nach oben und klicken Sie auf den Pfeil links von Ankerpunkt .Geben Sie 0.5 für X und Y ein.Dies verschiebt einen Teil deines Labels aus der Sicht, aber du wirst es dann korrekt positionieren.

  4. Scrollen Sie nach unten in den Eigenschaften und öffnen Sie Position . Ändern Sie die Skalierung von X und Y auf 0,5, damit die Box in der Mitte zentriert ist.

  5. In den Eigenschaften von Kauftext scrollen Sie nach unten und ändern Sie Text zu etwas Beschreibendem. Zum Instanz: "Buy Larger Bag: 100 gold".

  6. Überprüfen Sie TextSkaliert , um auf zu sein. Dies skaliert Ihren Text automatisch, so dass er in die Auswahlboxpasst.

Füge einen Klickdetektor hinzu

Spieler kaufen Artikel, indem sie auf den Shop klicken, anstatt ihn nur zu berühren.Das Skript verwendet einen Klickdetektor, um zu erkennen, ob ein Spieler auf das Geschäftsschild geklickt hat. Klickdetektoren sind Objekte, mit denen Benutzer mit etwas in der Umgebung interagieren können, wie z. B. die Öffnung einer Tür.

  1. Füge im Kauf-Button einen Klickdetektor hinzu.

  2. Füge in BuyButton ein neues Skript namens BuyScript hinzu und gib ihm einen beschreibenden Kommentar posten.

  3. Erstelle in BuyScript Variablen, um den Knopf-Teil und den Klickdetektor zu speichern.


    -- Lässt Spieler einen Knopf drücken, um ein Upgrade zu kaufen, das die Plätze erhöht
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Erstellen Sie eine neue Funktion namens giveUpgrade(), die einen Parameter namens player erhält.Die Funktion wird die Räume eines Spieler:inaktualisieren, wann immer er auf die Schaltfläche klickt.


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. Nach der Funktion geben Sie das Ereignis des Klickdetektors MouseClick der Funktion giveUpgrade() ein.


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. Füge ein Druck statement in giveUpgrade() hinzu, um die Funktion zu testen.


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Spiele dein Projekt ab. Klicke auf die Schaltfläche und überprüfe, dass du den Text im Ausgabe-Fenster siehst.

Problemlösungstipps

Problem: Du kannst die Schaltfläche nicht anklicken oder ein Mauszeiger erscheint nicht auf der Schaltfläche.

  • Stellen Sie sicher, dass das ClickDetector-Objekt ein Kind des Teils ist, auf das Sie klicken möchten.
  • Überprüfe, ob dein Charakter nah genug am Knopf ist. Oder stelle sicher, dass das Werkzeug nicht ausgerüstet ist.

Upgrades kaufen

Mit einem funktionierenden Button ist es Zeit, Code in giveUpgrade hinzuzufügen, um das Gold eines Spieler:inim Austausch für eine aufgerüstete Tasche zu entfernen.

Füge Upgrade-Variablen hinzu

Jedes Upgrade wird zwei Variablen haben: die Kosten des Upgrades und wie viele Plätze es hat.

  1. In BuyScript, unter local clickDetector, erstelle zwei Variablen:

    • newSpace : Wie viele Plätze ein Upgrade hinzufügt, wenn es gekauft wird.
    • upgradeCost : Die Kosten für ein einzelnes Upgrade

    -- Variablen für das Upgrade
    local newSpaces = 10
    local upgradeCost = 100

Gewährleistungs-Upgrades

Bevor du den Spieler das Upgrade verkaufst, musst du überprüfen, ob er über genug Geld verfügt. Wenn sie es tun, fügst du ihrer maximalen Anzahl von Plätzen hinzu.

  1. In giveUpgrade() geben Sie Folgendes ein, um die Leaderstatistiken des Spieler:inzu erhalten, damit Sie auf seine Gold- und Platzvariablen zugreifen können.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Holen Sie sich die Rangliste des Spieler:in, um andere IntValues zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Holt das Geld und die Räume des Spieler:in, um Änderungen vorzunehmen
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Nachdem du die Variablen für Räume geschrieben hast, erstelle ein if-Statement, wenn der Wert von playerGold mehr oder gleich der Upgrade-Kosten ist.


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- Überprüft, ob der Spieler über genug Geld verfügt, um das Upgrade zu bezahlen
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. Im if-Statement subtrahiere den Kosten des Upgrades vom Gold des Spieler:in.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Subtrahiere die Kosten des Artikels vom Geld des Spieler:in
    playerGold.Value -= upgradeCost
    end
  4. Fügen Sie auf der nächsten Zeile die Anzahl der aktuellen Räume des Spieler:inzusammen mit den neuen Räumen hinzu, die pro Upgrade gewährt wurden.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. Spiele dein Projekt und überprüfe die Rangliste, um zu überprüfen, ob das Platz-Upgrade funktioniert hat.

Problemlösungstipps

An diesem Punkt funktionieren die Upgrades nicht wie beabsichtigt, versuche eines der folgenden Optionen.

  • Stellen Sie sicher, dass alles in der von von beiden Seiten Zitate hat, wie .
  • Überprüfe, dass jede Zeiche in FindFirstChild exakt mit dem Namen des IntValue in dem Skript, das. PL: die Skriptsübereinstimmt.Wenn dein Code zum Beispiel Rubine als Geld verwendet, solltest du FindFirstChild("Rubies") haben.
  • Stellen Sie sicher, dass giveUpgrade() über clickDetector.MouseClick steht.

Komplette Skript, das. PL: die Skripts

Eine abgeschlossene Version des Skripts kann unten referenziert werden.


-- Lassen Sie Spieler einen Knopf klicken, um ein Upgrade zu kaufen, das die MaxSpaces erhöht
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variablen für das Upgrade
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Holen Sie sich die Rangliste des Spieler:in, um andere IntValues zu erhalten
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Holt das Geld und die Räume des Spieler:in, um Änderungen vorzunehmen
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Überprüft, ob der Spieler über genug Geld verfügt, um das Upgrade zu bezahlen
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Subtrahiere die Kosten des Artikels vom Geld des Spieler:in
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)