Can Çubukları
Coddy'nin Unity Journey'sinin Gerçek Oyunlar Geliştirmek bölümünün bir parçası. Ders 10 / 60.
Boşalan bir çubuk, Görsel Türü ayarı Doldurulmuş olarak belirlenmiş bir kullanıcı arayüzü görselidir. Bu ayar, Görsel'e bir Kaynak Görsel atandıktan sonra görünür; Hiçbiri seçiliyken Denetçi bu ayarı gizler. Doldurma Yöntemi Yatay ve Doldurma Başlangıcı Sol olarak ayarlandığında çubuk sol ucuna doğru küçülür; 0 ile 1 arasındaki fillAmount, çubuğun ne kadarının çizileceğini belirtir. Arkasındaki koyu renkli bir Görsel, boş kısmı gösterir. Unity, fillAmount değerini sınırlar; bu nedenle 1.4 tam dolu bir çubuk, -0.2 ise boş bir çubuk çizer.
fillAmount, kalan can miktarının oranıdır: can miktarının maksimum can miktarına bölümü. int alanlarında bu bir tamsayı bölmesidir ve 350 / 500 işleminin sonucu 0 olur; bu yüzden önce taraflardan birini float türüne dönüştürün. Image, UnityEngine.UI içinde bulunur. Bu boss çubuğu her vuruştan sonra güncellenir:
public Image bossBar;
public int bossMaxHp = 500;
private int bossHp = 500;
public void Hit(int damage)
{
bossHp = Mathf.Max(bossHp - damage, 0);
bossBar.fillAmount = (float)bossHp / bossMaxHp; // 350 / 500 = 0.7
}Çubuğun rengi de can miktarını yansıtabilir: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); çubuk tamamen doluyken yeşildir ve boşaldıkça kırmızıya döner.
Görev
KolayŞövalyenin kalkanını ve sağlığını iki çubukta göster.
ShowBars()yaz:shieldBar.fillAmount = (float)shield / maxShield;vehealthBariçin dehpvemaxHpile aynısını yap. BunuStart()içinde çağır.TakeDamageiçinde, kalkanMathf.Min(amount, shield)kadar hasarı karşılar ve kalan miktarhp'den düşer;hphiçbir zaman 0'ın altına inmez. ArdındanShowBars()çağır.
“Oyna” düğmesine bas ve dikenlerin üzerine yürü: önce kalkan çubuğu boşalır. Ardından “Kontrol et” düğmesine bas.
Kendin dene
using UnityEngine;
using UnityEngine.UI;
public class Knight : MonoBehaviour
{
public Image healthBar;
public Image shieldBar;
public int maxHp = 80;
public int maxShield = 40;
private int hp;
private int shield;
void Start()
{
hp = maxHp;
shield = maxShield;
// Her iki çubuğu da doldur
}
public void TakeDamage(int amount)
{
// Kalkan karşılayabildiği kadar hasarı karşılar; kalanı hp değerinden düşülür, ancak değer 0'ın altına inmez. Ardından her iki çubuğu da göster.
}
}
Gerçek Oyunlar Geliştirmek bölümündeki tüm dersler
1Ekrandaki Metinler
Canvas ve MetinSkoru GösterSayıları BiçimlendirGeri Sayım ZamanlayıcısıTekrar: Hız Göstergesi2Düğmeler ve Ekranlar
Düğmeler ve onClickLambda İfadeleriInspector'da Bağlantı KurmaPanelleri Açma ve KapamaCan ÇubuklarıTekrar: Yükseltme Mağazası5PlayerPrefs ile Kaydetme
Bir Sayı KaydetmeVarsayılan Değerle YüklemeEn Yüksek SkorAyarları KaydetmeTekrar: Bankadaki ParalarKendi başına pratik yap: Unity playground