Ini membawa kita ke tahap terakhir dari loop permainan - membeli peningkatan.Dengan membiarkan pemain membeli peningkatan yang meningkatkan ukuran tas barang mereka, mereka dapat memanen lebih banyak barang per perjalanan dan mendapatkan lebih banyak emas.
Buat belanja
Setiap toko akan memiliki tombol yang diklik pemain untuk membeli tas barang lebih besar.Toko itu sendiri akan menjadi bagian dengan SurfaceGUI, item yang memungkinkan teks ditulis di bagian.
Buat tanda
Di Ruang Kerja, buat model baru bernama Toko.
Di Toko, buat bagian blok baru bernama Tombol Beli.
Di Tombol Beli, tambahkan GUI Surface baru dengan mengklik + dan menggulir ke GUI.
Di GUI Permukaan, tambahkan Label Teks baru bernama BuyText. Label kecil akan muncul di suatu tempat di bagian.
Tergantung pada bagaimana bagian dibuat, label bisa berada di tempat lain.Jika Anda tidak melihat teks di sisi yang Anda inginkan, masuk ke SurfaceGUI dan temukan properti Wajah.Ubah properti itu sampai Anda melihat label teks.
Mengubah teks tanda
Saat ini, Label Teks benar-benar kecil dan sulit bagi pemain untuk melihatnya. Perlu diperluas.
Di properti BuyText, klik panah di sebelah Ukuran . Ubah Offset untuk X (kiri dan kanan) dan Y (atas dan bawah) menjadi 0.
Ubah skala X dan Y menjadi 0,5 untuk membuat kotak.
Gulir ke atas dalam properti Label Teks dan klik panah kiri dari Titik Anchor .Ketikkan 0.5 untuk X dan Y.Ini memindahkan bagian label Anda keluar dari pandangan tetapi Anda akan menempatkannya dengan benar berikutnya.
Gulir ke bawah dalam properti dan buka Posisi . Ubah skala X dan Y ke 0,5 sehingga kotak berada di tengah.
Di properti BuyText, gulir ke bawah dan ubah Teks menjadi sesuatu yang deskriptif. kejadian: "Buy Larger Bag: 100 gold" .
Periksa TextScaled untuk menjadi di . Ini secara otomatis membesarkan teks Anda sehingga sesuai dengan kotak.
Tambahkan detektor klik
Pemain akan membeli barang dengan mengklik toko daripada hanya menyentuhnya.Skrip akan menggunakan detektor klik untuk memberi tahu apakah pemain telah mengklik tanda toko. Detektor Klik adalah objek yang memungkinkan pengguna untuk berinteraksi dengan sesuatu di lingkungan, seperti membuka pintu.
Di Tombol Beli, tambahkan Detektor Klik.
Di Tombol Beli, tambahkan skrip baru bernama BuyScript dan berikan komentar deskriptif.
Di BuyScript, buat variabel untuk menyimpan bagian tombol dan klik detektor.
-- Biarkan pemain mengklik tombol untuk membeli upgrade yang meningkatkan Spasilocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorBuat fungsi baru bernama giveUpgrade() yang mendapatkan parameter bernama player .Fungsi akan meningkatkan ruang pemain setiap kali mereka mengklik tombol.
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endSetelah fungsi, ketikkan peristiwa klik detektor MouseClick ke fungsi giveUpgrade().
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)Tambahkan pernyataan cetak di giveUpgrade() untuk menguji fungsi.
local function giveUpgrade(player)print("Someone clicked the button.")endMainkan proyek Anda. Klik tombol dan periksa apakah Anda melihat teks di jendela Output.
Tip pemecahan masalah
Masalah: Anda tidak dapat mengklik tombol atau kursor mouse tidak muncul di tombol.
- Pastikan bahwa objek ClickDetector adalah anak dari bagian yang Anda coba klik.
- Periksa apakah karakter Anda cukup dekat dengan tombol. Atau, pastikan alat tidak dilengkapi.
Beli perbaikan
Dengan tombol yang berfungsi, saatnya untuk menambahkan kode ke giveUpgrade untuk menghapus emas pemain dalam pertukaran untuk tas yang ditingkatkan.
Tambahkan variabel peningkatan
Setiap peningkatan akan memiliki dua variabel: biaya upgrade dan berapa banyak ruang yang dimilikinya.
Di BuyScript, di bawah local clickDetector, buat dua variabel:
- newSpace : Berapa banyak ruang yang ditambahkan peningkatan saat dibeli.
- upgradeCost : Biaya upgrade tunggal
-- Variabel untuk upgradelocal newSpaces = 10local upgradeCost = 100
Berikan peningkatan
Sebelum menjual pemutar upgrade, Anda perlu memeriksa apakah mereka memiliki cukup uang. Jika mereka melakukannya, Anda akan menambahkan ke jumlah maksimum ruang mereka.
Di giveUpgrade() , ketikkan berikut untuk mendapatkan statistik pemimpin pemain sehingga Anda dapat mengakses variabel emas dan ruang mereka.
local function giveUpgrade(player)print("Someone clicked the button")-- Dapatkan papan peringkat pemain untuk mendapatkan IntValues lainlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Mendapatkan uang dan ruang pemain untuk membuat perubahanlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendSetelah menulis variabel untuk ruang, buat pernyataan if untuk jika nilai playerGold lebih atau sama dengan biaya upgrade.
local function giveUpgrade(player)local playerStats = player:FindFirstChild("leaderstats")if playerStats thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- Memeriksa apakah pemain memiliki cukup uang untuk membeli upgradeif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendDalam pernyataan if, kurangi biaya upgrade dari emas pemain.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- Kurangi biaya item dari uang pemainplayerGold.Value -= upgradeCostendDi baris berikutnya, tambahkan jumlah ruang saat ini pemain bersama dengan ruang baru yang diberikan per upgrade.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendMainkan proyek Anda dan periksa papan peringkat untuk memeriksa apakah peningkatan ruang berfungsi.
Tip pemecahan masalah
Pada titik ini, peningkatan tidak berfungsi seperti yang diinginkan, coba salah satu dari berikut ini.
- Pastikan apa pun di dari memiliki kutipan di kedua sisi, seperti .
- Periksa bahwa setiap string di FindFirstChild persis sama dengan nama IntValue tersebut di skrip PlayerSetup.Sebagai contoh, jika kode Anda menggunakan Ruby sebagai uang, Anda harus memiliki FindFirstChild("Rubies") .
- Pastikan bahwa giveUpgrade() di atas clickDetector.MouseClick.
Selesaikan naskah BuyScript
Versi selesai dari skrip dapat di referensikan di bawah ini.
-- Biarkan pemain mengklik tombol untuk membeli upgrade yang meningkatkan MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variabel untuk upgrade
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Dapatkan papan peringkat pemain untuk mendapatkan IntValues lain
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Mendapatkan uang dan ruang pemain untuk membuat perubahan
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Memeriksa apakah pemain memiliki cukup uang untuk membeli upgrade
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Kurangi biaya item dari uang pemain
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)