To prowadzi nas do ostatniego etapu pętla gry - kupowania ulepszeń.Pozwalając graczom kupować ulepszenia, które zwiększają rozmiar ich torby na przedmioty, mogą zbierać więcej przedmiotów za każdą podróż i zarabiać jeszcze więcej złota.
Stwórz robić zakupy
Każdy sklep będzie miał przycisk, który gracze klikną, aby kupić większą torbę na przedmioty.Sam sklep będzie częścią z interfejsem SurfaceGUI, przedmiotem, który pozwala na pisanie tekstu na częściach.
Stwórz znak
W przestrzeni roboczej utwórz nowy model o nazwie Sklep.
W sklepie utwórz nową część bloku o nazwie BuyButton.
W BuyButton dodaj nową powierzchniową GUI, klikając + i przewijając do GUI.
W powierzchniowej GUI dodaj nową etykietę tekstową o nazwie BuyText. Niewielka etykieta pojawi się gdzieś na części.
W zależności od tego, jak część została wykonana, etykieta może być gdzie indziej.Jeśli nie widzisz tekstu po stronie, której chcesz, wejdź do SurfaceGUI i znajdź właściwość Twarz.Zmień tę właściwość, aż zobaczysz etykietę tekstową.
Zmień tekst znaku
Obecnie etykieta tekstowa jest bardzo mała i trudna do zobaczenia dla graczy. Musi zostać rozszerzona.
W właściwościach Kupuj tekst kliknij strzał obok Rozmiaru . Zmień Odległość dla X (lewo i prawo) i Y (w górę i w dół) na 0.
Zmień skalę z X i Y na 0,5 , aby stworzyć kwadrat.
Przewiń w górę w właściwościach TextLabel i kliknij strzał lewo od Punktu Anchora .Wpisz 0.5 dla X i Y.Przesuwa to część twojej etykiety z pola widzenia, ale następnie pozycjonujesz ją prawidłowo.
Przewiń w dół właściwości i otwórz Pozycję . Zmień skalę X i Y na 0,5, aby pudełko znajdowało się w środku.
W właściwościach BuyText przewiń w dół i zmień tekst na coś opisującego. Na instancja: "Buy Larger Bag: 100 gold".
Sprawdź Skalowanie tekstu , aby było na . To automatycznie skaluje Twój tekst, aby pasował do pudełka.
Dodaj detektor kliknięć
Gracze będą kupować przedmioty, klikając na sklep, a nie tylko dotykając go.Skrypt wykorzysta wykrywacz kliknięć, aby powiedzieć, czy gracz kliknął znak sklepu. Detektory kliknięć są obiektami, które pozwalają użytkownikom interaktywnie wchodzić w interakcję z czymś w środowisko, takim jak otwarcie drzwi.
W przycisku kupowania dodaj detektor kliknięć.
W BuyButton dodaj nowy skrypt o nazwie BuyScript i dodaj do niego komentowaćopisowy.
W BuyScript utwórz zmienne, aby przechować część przycisku i detektor kliknięć.
-- Pozwól graczom kliknąć przycisk, aby kupić ulepszenie, które zwiększa przestrzenielocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorStwórz nową funkcję o nazwie giveUpgrade(), która otrzymuje parametr o nazwie player.Funkcja ulepszy przestrzenie gracza za każdym razem, gdy klikną przycisk.
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endPo funkcji wprowadź wydarzenie MouseClick klik wykrywacza do funkcji giveUpgrade().
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)Dodaj oświadczenie druku w giveUpgrade() , aby przetestować funkcję.
local function giveUpgrade(player)print("Someone clicked the button.")endOdtwórz swój projekt. Kliknij przycisk i sprawdź, czy widzisz tekst w oknie wyjściowym.
Wskazówki dotyczące rozwiązywania problemów
Problem: Nie możesz kliknąć przycisku lub myszka nie pojawia się na przycisku.
- Upewnij się, że obiekt ClickDetector jest dzieckiem części, na którą próbujesz kliknąć.
- Sprawdź, czy twój charakter jest wystarczająco blisko przycisku. Lub upewnij się, że narzędzie nie jest wyposażone.
Kup ulepszenia
Z pracującym przyciskiem nadszedł czas, aby dodać kod do giveUpgrade, aby usunąć złoto gracza w zamian za ulepszony plecak.
Dodaj zmienne ulepszeń
Każde ulepszenie będzie miało dwie zmienne: koszt ulepszenia i ilu miejsc ma.
W BuyScript, pod local clickDetector, stwórz dwie zmienne:
- newSpace : Ile miejsc dodaje aktualizacja po zakupie.
- upgradeCost : Koszt pojedynczej uaktualnienie
-- Zmienne dla uaktualnienielocal newSpaces = 10local upgradeCost = 100
Przyznaj ulepszenia
Zanim sprzedasz graczowi uaktualnienie, musisz sprawdzić, czy mają wystarczająco pieniędzy. Jeśli tak, dodasz do ich maksymalnej ilości miejsc.
W giveUpgrade() , wpisz poniżej następujące, aby uzyskać statystyki lidera gracza, tak abyś mógł uzyskać dostęp do ich zmiennych złota i przestrzeni.
local function giveUpgrade(player)print("Someone clicked the button")-- Zdobywa tabelę wyników gracza, aby uzyskać inne IntValueslocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Zdobywa pieniądze i przestrzeń gracza, aby wprowadzać zmianylocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendPo napisaniu zmiennych dla przestrzeni stwórz oświadczenie if, jeśli wartość playerGold jest większa lub równa kosztowi ulepszenia.
local function giveUpgrade(player)local playerStats = player:FindFirstChild("leaderstats")if playerStats thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- Sprawdza, czy gracz ma wystarczająco pieniędzy, aby sobie pozwolić na uaktualnienieif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendW oświadczeniu if odejmij koszt ulepszenia z złota gracza.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- Odejmij koszt przedmiotu od pieniędzy graczaplayerGold.Value -= upgradeCostendNa następnej linii dodaj liczbę obecnych przestrzeni gracza wraz z nowymi przestrzeniami przyznanymi za uaktualnienie.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendOdtwórz swój projekt i sprawdź tabelę wyników, aby sprawdzić, czy aktualizacja przestrzeni zadziałała.
Wskazówki dotyczące rozwiązywania problemów
W tym momencie ulepszenia nie działają tak, jak zakładano, spróbuj jednego z poniższych.
- Upewnij się, że wszystko w () z FindFirstChild() z obu stron ma cytaty na obu stronach, tak jak "leaderstats" .
- Sprawdź, czy każda struna w FindFirstChild jest dokładnie taka sama jak nazwa IntValue w skrypcie PlayerSetup.Na przykład, jeśli twój kod używa rubinów jako pieniędzy, powinieneś mieć FindFirstChild("Rubies").
- Upewnij się, że giveUpgrade() jest powyżej clickDetector.MouseClick.
Zakończ skrypt BuyScript
Zakończona wersja skryptu może być odwołana poniżej.
-- Pozwól graczom kliknąć przycisk, aby kupić ulepszenie, które zwiększa MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Zmienne dla uaktualnienie
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Zdobywa tabelę wyników gracza, aby uzyskać inne IntValues
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Zdobywa pieniądze i przestrzeń gracza, aby wprowadzać zmiany
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Sprawdza, czy gracz ma wystarczająco pieniędzy, aby sobie pozwolić na uaktualnienie
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Odejmij koszt przedmiotu od pieniędzy gracza
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)