Bu, oyun döngüsünün son aşamasına getirir - yükseltmeleri satın almak. Oyuncuların eşya çantasının boyutunu artıran yükseltmeleri satın alarak, her gezinti için daha fazla eşya toplayabilir ve hatta daha fazla altın kazanabilirler.
Bir Dükurma Oluşturulması
Her dükkanın bir düğmesine sahip olacak, böylece oyuncular daha büyük bir öğe çantası satın alabilirler. Dükkanın kendisi bir SurfaceGUI olacak, böylece parçalarda yazı yazılabilen bir öğe izin veren bir parçadır.
İşaret Oluşturulması
Çalışma Alanında, Shop adında yeni bir model oluştur.
Dükkanda, BuyButton adında yeni bir blok parçası oluşturun.
In BuyButton, +'i tıklayarak ve GUI'yi kaydırerek Yeni Bir Yüze GUI Ekle.
Yüzey GUI'sinde, BuyText adında yeni bir TextLabel ekleyin. Parçanın herhangi bir yerinde küçük bir etiket görünecek.
Parçanın nasıl yapıldığına bağlı olarak etiket başka bir yerde olabilir. Eğer görsel etiketi görmezseniz, yüzey GUI'sine gidin ve Yüz özelliğini değiştirin. Görsel etiketi görene kadar bu özelliği değiştirin.
İşaret Metni'ni Değiştirme
Şu anda, TextLabel oyuncular tarafından görülebilir olmayan gerçekten küçük ve zor. Onun boyutu artırılmalıdır.
In the BuyText properties, click on the arrow next to Boyut . Change the Offset for X (left and right) and Y (up and down) to 0.
Kare oluşturmak için X ve Y'nin ölçeğini 0.5'e değiştir.
TextLabel özelliklerinde kaydırın ve AnchorPoint 'in solundaki oka tıklayın. X ve Y için 0.5 yazın. Bu, etiketinizin görünümünden bir kısmını gizleyecek, ancak bunu bir sonraki göre doğru olarak yerleştireceksiniz.
Özelliklerde kaydırın ve Position 'yi açın. X ve Y'nin ölçeğini 0.5'e ayarlayın, böylece kutu orta merkezde olacak.
In the BuyText özelliklerinde, kaydırın ve Metin değerini açıklayıcı bir şeyle değiştirin. durum: "Buy Larger Bag: 100 gold" .
Check TextScaled to be on . This automatically scales your text so it fits the box.
Bir Tıklama Algılayıcı Ekleme
Oyuncular, sadece dokunmak yerine dükkanı tıklayarak eşya satın alacaklar. Kod, bir oyuncunun dükkan işaretine tıkladığını görmek için bir tıklama algılayıcısı kullanacak. TıklamaAlgılayıcılar bir oyuncunun çevrebir etkileşim olmasını sağlayan nesnelerdir, örneğin bir kapıyı açmak.
AlButon'a, bir ClickDetector ekleyin.
In BuyButton, BuyScript adında yeni bir senaryo ekler ve açıklayıcı bir yorum verir.
In BuyScript, buton bölümünü depolamak için değişkenler oluşturun ve klik detector'ına tıklayın.
-- Oyunculara Alanları Genişleten bir Yükseltmeyi satın almak için bir düğmeye tıklamalarını sağlayalımlocal buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorOyuncunun ismini alanını herhangi bir anda tıkladığında oyuncunun alanını yükseltir. giveUpgrade() adlı yeni bir işlev oluşturun, oyuncunun alanını herhangi bir anda yükseltir.
local buyButton = script.Parentlocal clickDetector = buyButton.ClickDetectorlocal function giveUpgrade(player)endFonksiyonun ardından, MouseClick işlevini giveUpgrade() işlevine bağlayın.
local function giveUpgrade(player)endclickDetector.MouseClick:Connect(giveUpgrade)giveUpgrade() işlevini test etmek için bir print statement ekleyin.
local function giveUpgrade(player)print("Someone clicked the button.")endOyunu oyna projünüzü. Düğmeye tıklayın ve çıktı pencerede gördüğünüz metni kontrol edin.
Hata ayıklama ipuçları
Sorun: Butona tıklayamazsınız veya bir fare kurucu butunda görünmez.
- ClickDetector nesnesinin parçaya tıkladığınızda bir çocuğu olduğundan emin olun.
- Karakterinizin düğmeye yeterince yakın olduğundan emin olun. Aksi takdirde, aletin donanımını sağlayın.
Geliştirmeleri Satın Alma
Çalışan bir düğme ile, giveUpgrade'a kod eklemek zamanıdır, bir oyuncunun altınını yükseltmenin karşılığında kaldırmak için.
Yükseltme Değişkenleri Ekleme
Her yükseltmede iki değişken olacak: yükseltmenin maliyeti ve kaç alanı olduğu.
In BuyScript, under local clickDetector , iki değişken oluşturun:
- newSpace : Bir yükseltmede kaç alan ekleneceği.
- upgradeCost : Tek bir yükseltmenin maliyeti
-- yükseltiçin çeşitlilocal newSpaces = 10local upgradeCost = 100
Geliştirmeleri Verme
Oyuncuya yükseltmeyi satmadan önce, onların yeterli paraları olduğundan emin olmalısınız. Eğer öyleyse, maksimum onların sayısına katılacaksınız.
In giveUpgrade() , oyuncu'ın lider istatistiklerini alabilmek için aşağıdaki kutuya yazın, böylece onların 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ı alarak değişiklikler yaparlocal playerGold = playerStats:FindFirstChild("Gold")local playerSpaces = playerStats:FindFirstChild("Spaces")endendBoşluk çeşitleri için değişkenleri yazdıktan sonra, playerGold değerinin yükseltme maliyetinden daha fazla veya eşit olup olmadığını ifade etmek için bir if statement 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 finanse etmesine izin verdiği paraya sahip olduğunu kontrol ederif playerGold and playerSpaces and playerGold.Value >= upgradeCost thenendendendif ifadesinde, yükseltmenin maliyetini oyuncunun altından çıkarın.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then-- öğemaliyetini oyuncunun parasından düşürplayerGold.Value -= upgradeCostendSonraki satırda, oyuncunun mevcut alanlarının yeni alanları ile birleştirilmesi için oyuncunun mevcut alanlarının sayısını ekleyin.
if playerGold and playerSpaces and playerGold.Value >= upgradeCost thenplayerGold.Value -= upgradeCostplayerSpaces.Value += newSpacesendProjenizi oynatın ve lider tablosunu kontrol edin, böylece uzay yükseltmesinin işlediğini kontrol edebilirsiniz.
Hata ayıklama ipuçları
Bu noktada, yükseltmeler planlanan gibi çalışmaz, aşağıdaki birini deneyin.
- Make sure anything in the () of FindFirstChild() Error: both sides, like 1> "leaderstats"1> .
- FindFirstChild'in her satırının PlayerSetup kodunda bulunan IntValue'in adı ile aynı olduğundan emin olun. Örneğin, kodunuz Ruby olarak para kullanıyorsa, FindFirstChild("Rubies") olmalıdır.
- Make sure that giveUpgrade() is above clickDetector.MouseClick .
Scripti Satın Al
Skriptin bitirilmiş bir versiyonu aşağıda referanslanabilir.
-- Oyuncular MaxSpaces'ı artıran bir yükseltmeyi satın almak için bir düğmeye tıklasın
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- yükseltiçin çeşitli
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ı alarak değişiklikler yapar
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Oyuncunun yükseltmeyi finanse etmesine izin verdiği paraya sahip olduğunu kontrol eder
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- öğemaliyetini oyuncunun parasından düşür
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)