Dies bringt uns zum letzten Teil des Spiels - Upgrades zu kaufen. Indem wir erlauben, dass Spieler Upgrades kaufen, die die Größe ihres Gegenstandsbeutels erhöhen, können sie mehr Gegenstände pro Trip kaufen und noch mehr Gold verdienen.
Erstellen eines Shops
Jeder Shop wird eine Schaltfläche haben, die Spieler klicken, um eine größere Artikel-Tasche zu kaufen. Die Shop- selbst wird ein Teil mit einer SurfaceGUI sein, ein Element, das Text auf Teile schreiben kann.
Das Schild erstellen
Im Arbeitsbereicherstellen Sie ein neues Modell namens Shop.
Erstellen Sie im Shop einen neuen Block namens BuyButton.
In BuyButton fügen Sie eine neue Oberflächen-GUI hinzu, indem Sie auf die +-Schaltfläche klicken und mit der Scrollen nach grafische Benutzeroberflächescrollen.
In der Oberfläche grafische Benutzeroberflächefügen Sie ein neues TextLabel hinzu, benannt BuyText. Ein kleines Label wird irgendwo auf der Teil angezeigt.
Abhängig von der Art und Weise, wie das Teil hergestellt wurde, kann das Etikett an einem anderen Ort sein. Wenn Sie das Text-Etikett auf der Seite nicht sehen, gehen Sie in die Oberflächen-GUI und finden Sie die Eigenschaft Gesicht. Ändern Sie diese Eigenschaft, bis Sie das Beschriftungsehen.
Ändern des Zeichentexts
Der TextLabel ist derzeit sehr klein und schwer für die Spieler zu sehen. Es muss skaliert werden.
In den BuyText-Eigenschaften, klicken Sie auf die Pfeile neben Größe . Ändern Sie den Offset für X (links und rechts) und Y (hoch und runter) auf 0.
Ändere die Skala von X und Y auf 0,5, um ein Quadrat zu erhalten.
Scrollen Sie in den TextLabel-Eigenschaften und klicken Sie auf die Pfeil links von AnchorPoint . Tippe in 0.5 für X und Y. Dies bewegt einen Teil deines Labels aus der Ansicht, aber du positionierst es richtig nächste.
Scrollen Sie in den Eigenschaften nach unten und öffnen Sie Position . Ändern Sie die Skalierung von X und Y auf 0.5, so dass die Box in der Mitte angezeigt wird.
In den BuyText-Eigenschaften, scrollen Sie nach unten und ändern Sie Text in etwas Descriptive. Zum Instanz: "Buy Larger Bag: 100 gold" .
Überprüfen Sie TextScaled auf sein . Dies skaliert Ihren Text automatisch, damit er in die Auswahlboxpasst.
Einen Klick-Detektor hinzufügen
Spieler werden Gegenstände kaufen, indem sie auf den Shop klicken, anstatt einfach darauf zu berühren. Das Skript verwendet einen Klick-Detektor, um zu überprüfen, ob ein Spieler auf das Schild im Shop geklickt hat. KlickDetektor sind Objekte, mit denen Benutzer mit etwas in der Umgebung interagieren können, wie das Öffnen einer Tür.
In der KaufSchaltfläche fügen Sie einen ClickDetector hinzu.
In BuyButton fügen Sie ein neues Skript namens BuyScript hinzu und geben Sie es einen beschreibenden Kommentar posten.
In BuyScript erstellen Sie Variablen, um die Button-Teil zu speichern und auf Klicken-Detektor zu klicken.
-- Lässt Spieler auf eine Schaltfläche klicken, um ein Upgrade zu kaufen, das die Plätze erhöhtlocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorErstellen Sie eine neue Funktion namens giveUpgrade(), die einen Parameter namens player erhält. Die Funktion wird die Räume eines Spieler:inaktualisieren, wenn sie auf die Schaltfläche klicken.
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endNach der Funktion, tippe das Ereignis des Klickdetektors MouseClick auf die Funktion giveUpgrade().
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)Fügen Sie eine druckende Anweisung in giveUpgrade() hinzu, um die Funktion zu testen.
local function giveUpgrade(player)print("Someone clicked the button.")endSpiele dein Projekt . Klicken Sie auf die Schaltfläche und überprüfen Sie, dass Sie den Text im Ausgabe-Fenster sehen.
Troubleshooting-Tipps
Problem: Du kannst die Schaltfläche nicht anklicken oder ein Mauscursor erscheint nicht auf der Schaltfläche.
- Stellen Sie sicher, dass das ClickDetector-Objekt ein Kind des Teils ist, auf den Sie versuchen zu klicken.
- Stellen Sie sicher, dass Ihr Charakter nah genug an der Schaltfläche ist. Oder stellen Sie sicher, dass das Werkzeug nicht ausgerüstet ist.
Upgrades kaufen
Mit einem funktionierenden Button ist es an der Zeit, Code in giveUpgrade hinzuzufügen, um das Gold eines Spieler:inim Austausch für eine aufgewertete Tasche zu entfernen.
Upgrade- Variablen hinzufügen
Jedes Upgrade hat zwei Variablen: die Kosten des Upgrades und wie viele Plätze es hat.
In BuyScript, unter local clickDetector, erstellen Sie zwei Variablen:
- newSpace : Wie viele Plätze ein Upgrade hinzufügt, wenn es gekauft wird.
- upgradeCost : Die Kosten für ein einzelnes Upgrade
-- Variable für das Upgradelocal newSpaces = 10local upgradeCost = 100
Upgrades gewähren
Bevor du dem Spieler die Upgradeverkaufst, musst du überprüfen, ob er genug Geld hat. Wenn sie es tun, fügst du zu ihrem maximalen Anzahl an Plätzen hinzu.
In giveUpgrade() , geben Sie die folgenden Informationen ein, um die Spielerstatistik des Spieler:inzu erhalten, damit Sie auf seine Gold- und Platz variablen zugreifen können.
local function giveUpgrade(player)print("Someone clicked the button")-- Bekommt die Rangliste des Spieler:in, um andere IntColors zu erhaltenlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Bekommt das Geld und die Räume des Spieler:in, um Änderungen vorzunehmenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendNach dem Schreiben der Variablen für die Plätze erstellen Sie ein if- Statement, um festzustellen, ob der Wert von playerGold mehr oder gleich ist.
local function giveUpgrade(player)local playerStats = player:FindFirstChild("leaderstats")if playerStats thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- Überprüft, ob der Spieler genug Geld hat, um das Upgrade zu finanzierenif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendIn der if-Anweisung subtrahiert die Upgrade-Kosten vom Gold des Spieler:in.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- Subtrahiere die Kosten des Artikelaus dem Geld des Spieler:inplayerGold.Value -= upgradeCostendIn der nächsten Zeile fügen Sie die Anzahl der aktuellen Felder des Spieler:inund die neuen Felder hinzu, die pro Upgrade vergeben werden.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendSpielen Sie Ihr Projekt und überprüfen Sie die Rangliste, um zu überprüfen, ob die Platz-Upgrade funktioniert hat.
Troubleshooting-Tipps
An dieser Stelle funktionieren die Upgrades nicht wie erwartet, versuchen Sie einen der folgenden Optionen.
- Stellen Sie sicher, dass alles in der () von FindFirstChild() hat Zitate auf beiden Seiten, wie **** leaderstats1> .
- Stellen Sie sicher, dass jede Zeile in FindFirstChild genau dasselbe ist wie der Name von IntValue in der Skript, das. PL: die Skripts. Zum Beispiel, wenn Ihr Code Rubine als Geld verwendet, sollten Sie FindFirstChild("Rubies") haben.
- Stellen Sie sicher, dass giveUpgrade() über clickDetector.MouseClick ist.
Schließe den Kauf von Skripten ab
Eine fertige Version des Skripts kann unten verwendet werden.
-- Lässt Spieler auf eine Schaltfläche klicken, um ein Upgrade zu kaufen, das die maximale Anzahl von Plätzen erhöht
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variable für das Upgrade
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Bekommt die Rangliste des Spieler:in, um andere IntColors zu erhalten
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Bekommt 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 genug Geld hat, um das Upgrade zu finanzieren
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Subtrahiere die Kosten des Artikelaus dem Geld des Spieler:in
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)