Bilah Kesehatan
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 10 dari 60.
Bilah yang kosong adalah Image UI dengan Tipe Gambar yang diatur ke Terisi. Pengaturan itu muncul setelah Image memiliki Gambar Sumber; jika nilainya Tidak Ada, Inspector menyembunyikannya. Metode Isian Horizontal dengan Asal Isian Kiri membuat bilah menyusut ke arah ujung kirinya, dan fillAmount, dari 0 hingga 1, menentukan seberapa banyak bilah yang digambar. Image berwarna gelap di belakangnya menunjukkan bagian yang kosong. Unity membatasi nilai fillAmount, jadi 1.4 menggambar bilah penuh dan -0.2 menggambar bilah kosong.
fillAmount adalah bagian kesehatan yang tersisa: kesehatan dibagi dengan nilai maksimumnya. Dengan field int, pembagian itu menghasilkan bilangan bulat, dan 350 / 500 adalah 0, jadi ubah salah satu sisi menjadi float terlebih dahulu. Image berada di UnityEngine.UI. Bilah bos ini diperbarui setelah setiap pukulan:
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
}Warna bilah juga dapat mengikuti kesehatan: bossBar.color = Color.Lerp(Color.red, Color.green, bossBar.fillAmount); akan berwarna hijau saat bilah penuh dan berubah menjadi merah saat bilah kosong.
Tantangan
MudahTampilkan perisai dan kesehatan kesatria pada dua bilah.
- Tulis
ShowBars():shieldBar.fillAmount = (float)shield / maxShield;, dan lakukan hal yang sama untukhealthBardenganhpdanmaxHp. Panggil fungsi ini diStart(). - Di
TakeDamage, perisai menahanMathf.Min(amount, shield)dan sisanya mengurangihp, yang tidak pernah kurang dari 0. Lalu panggilShowBars().
Tekan tombol “Main” dan berjalanlah ke atas duri: bilah perisai akan kosong lebih dulu. Lalu tekan tombol “Periksa”.
Coba sendiri
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;
// Isi kedua bilah.
}
public void TakeDamage(int amount)
{
// Perisai menahan kerusakan semampunya. Sisanya mengurangi hp hingga paling rendah 0. Lalu tampilkan kedua bilah.
}
}
Semua pelajaran di Membangun Game Sungguhan
2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di BankLatihan sendiri: Playground Unity