Bu bizi oyun döngüsünün son aşamasına getiriyor - yükseltmeler satın almak.Oyuncuların eşya çantasının boyutunu artıran yükseltmeler satın almasına izin vererek, her seyahatte daha fazla eşya toplayabilir ve daha fazla altın kazanabilirler.
Bir alışveriş yapoluştur
Her dükkan, oyuncuların daha büyük bir eşya çantası satın almak için tıkladığı bir düğmeye sahip olacak.Mağaza kendisi bir SurfaceGUI parçası olacak, parçalara yazı yazılmasına izin veren bir öğe.
İşareti oluştur
Çalışma Alanında, Shop adlı yeni bir model oluşturun.
Mağazada, Satın Al düğmesi adlı yeni bir blok parçası oluşturun.
Satın Alma Düğmesinde, +'a tıklayarak ve GUI'ye kaydırarak yeni bir Yüzey GUI'si ekleyin.
Yüzey GUI'sinde, Satın Alma Etiketi adlı yeni bir etiket ekleyin. Küçük bir etiket parçanın bir yerinde görünecek.
Parçanın nasıl üretildiğine bağlı olarak, etiket başka bir yerde olabilir.İstediğiniz tarafta metni göremiyorsanız, SurfaceGUI'ye girin ve Yüz özelliğini bulun.Metin etiketini görene kadar bu özelliği değiştirin.
İşaret metnini değiştir
Şu anda, TextLabel gerçekten küçük ve oyuncuların görmesi zor. Ölçeklendirilmesi gerekiyor.
Satın Alma Metni özelliklerinde, Boyut yanındaki okuna tıklayın. X (sol ve sağ) ve Y (yukarı ve aşağı) için Ofset değiştirin 0'a.
X ve Y'nin ölçeğini 0.5'e değiştirerek bir kare oluşturun.
TextLabel özelliklerinde yukarı kaydırın ve AnkerNoktası 'nın solundaki oku tıklayın.X ve Y için 0.5 yazın.Bu, etiketin bir kısmını görünümden çıkarır, ancak sonra doğru konumlandırırsınız.
Özelliklerde aşağı kaydırın ve Pozisyon açın. X ve Y'nin ölçeğini 0.5'e değiştirin, böylece kutu ortada dengelenir.
Satın Alma Metni özelliklerinde, aşağı kaydırın ve Metni açıklayıcı bir şeye değiştirin. durum: "Buy Larger Bag: 100 gold" .
Metin Ölçeklendirilmiş olup olmadığını kontrol edin on . Bu, metnin kutuya uyması için otomatik olarak ölçeklendirir.
Bir tıklama dedektörü ekleyin
Oyuncular, sadece dokunmak yerine mağazaya tıklayarak eşyalar satın alacaklar.Senaryo, bir oyuncunun mağaza işaretine tıkladığını söylemek için bir tıklama dedektörü kullanacaktır. Tıklama Dedektörleri kullanıcıların çevredeki bir şeyle etkileşime girmesine izin veren nesnelerdir, örneğin bir kapıyı açmak.
Satın Al düğmesinde, bir Tıklama Dedektörü ekleyin.
Satın Al butonunda, Satın AlScript adlı yeni bir senaryo ekleyin ve açıklayıcı bir yorum verin.
BuyScript'te, düğme parçasını ve tıklama dedektörünü depolamak için değişkenler oluşturun ve tıklayın.
-- Oyuncuların, Spaces'i artıran bir yükseltme satın almak için bir düğmeye tıklamalarına izin verinlocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectoradlı yeni bir işlev oluşturun, adlı bir parametre alır ve adlı bir işlev adı verir.İşlev, oyuncunun alanlarını herhangi bir düğmeye tıkladığında yükseltecektir.
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endİşlevden sonra, tıklama dedektörünün MouseClick etkinliğini giveUpgrade() işlevine bağlayın.
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)giveUpgrade() içine işlevi test etmek için bir yazdırma ifadesi ekleyin.
local function giveUpgrade(player)print("Someone clicked the button.")endOyna projenizi. Düğmeye tıklayın ve çıktı penceresinde metni gördüğünüzden emin olun.
Sorun giderme ipuçları
Sorun: Düğmeye tıklayamazsınız veya bir fare işaretleyici düğmeye görünmez.
- Tıklama Dedektörü nesnesinin, tıklamaya çalıştığınız parçanın bir çocuğu olduğundan emin olun.
- Karakterinizin butona yeterince yakın olduğundan emin olun. Veya araç donatılmadığından emin olun.
Yükseltmeler satın al
Çalışan bir düğme ile, bir oyuncunun altınını yükseltme karşılığında kaldırmak için giveUpgrade'a kod eklemek zamanı geldi.
Yükseltme değişkenleri ekleyin
Her yükseltmede iki değişken olacak: yükseltmenin maliyeti ve kaç alanı var.
BuyScript'te, local clickDetector , iki değişken oluştur:
- newSpace : Bir yükseltme satın alındığında kaç alan ekler.
- upgradeCost : Tek bir yükseltmenin maliyeti
-- yükseltiçin değişkenlerlocal newSpaces = 10local upgradeCost = 100
Yükseltmeler verin
Oyuncuya yükseltme satmadan önce, yeterli paraya sahip olup olmadıklarını kontrol etmeniz gerekir. Eğer yaparlarsa, maksimum alanlarına ekleyeceksiniz.
In giveUpgrade() , oyuncunun lider istatistiklerine erişmek için aşağıdakileri yazın, böylece altın ve alan değişkenlerine erişebilirsiniz.
local function giveUpgrade(player)print("Someone clicked the button")-- Diğer IntValues almak için oyuncunun lider tablosunu alırlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- oyuncupara ve alanlarını değiştirmek için alırlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendBoşluklar için değişkenleri yazdıktan sonra, playerGold değerinin yükseltme maliyetine daha fazla veya eşit olduğu durumda bir if ifadesi oluşturun.
local function giveUpgrade(player)local playerStats = player:FindFirstChild("leaderstats")if playerStats thenlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")-- Oyuncunun yükseltmeyi karşılayacak yeterli para olup olmadığını kontrol ederif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendif ifadesinde, yükseltmenin maliyetini oyuncunun altınından düşürün.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- öğemaliyetini oyuncunun parasından çıkarplayerGold.Value -= upgradeCostendSonraki satırda, yükseltmeye verilen yeni alanlarla birlikte oyuncunun mevcut alan sayısını ekleyin.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendProjenizi oynayın ve alanların yükseltilmesinin çalışıp çalışmadığını kontrol etmek için lider tablosunu kontrol edin.
Sorun giderme ipuçları
Bu noktada, yükseltmeler niyet edilen şekilde çalışmıyor, aşağıdakilerden birini deneyin.
- ıçindeki herhangi bir şeyin ın her iki tarafında alıntılar olduğundan emin olun, örneğin .
- FindFirstChild'teki her dize PlayerSetup betiğindeki IntValue adıyla aynı olup olmadığını kontrol edin.Örneğin, kodunuz para olarak Rubileri kullanıyorsa, FindFirstChild("Rubies") sahip olmalısınız.
- giveUpgrade() üzerinde olduğundan emin olun clickDetector.MouseClick .
Satın Alma Komutu scriptini tamamla
Senaryonun bitmiş bir versiyonu aşağıda referans olarak gösterilebilir.
-- Oyuncuların MaxSpaces'i artıran bir yükseltme satın alması için bir düğmeye tıklamasına izin verin
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- yükseltiçin değişkenler
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Diğer IntValues almak için oyuncunun lider tablosunu alır
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- oyuncupara ve alanlarını değiştirmek için alır
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Oyuncunun yükseltmeyi karşılayacak yeterli para olup olmadığını kontrol eder
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- öğemaliyetini oyuncunun parasından çıkar
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)