Timer Hitung Mundur
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 4 dari 60.
Hitung mundur menyimpan sisa waktu dalam float dan menguranginya dengan Time.deltaTime setiap frame. Frame terakhir jarang sekali tepat mencapai 0, jadi Mathf.Max menghentikannya di sana, dan kejadian akhir harus berlangsung satu kali. Sumbu ini memberi pemain waktu 5 detik untuk menjinakkan bom:
public TMP_Text fuseText;
public float fuse = 5f;
private bool exploded;
void Update()
{
if (exploded)
{
return;
}
fuse = Mathf.Max(fuse - Time.deltaTime, 0f);
fuseText.text = "Fuse: " + Mathf.CeilToInt(fuse);
if (fuse == 0f)
{
exploded = true;
fuseText.text = "BOOM";
fuseText.color = Color.red;
}
}Mathf.CeilToInt membulatkan ke atas, seperti yang ditampilkan hitung mundur: 5 selama satu detik penuh pertama (4.99 dibulatkan ke atas menjadi 5), 1 selama detik terakhir, dan 0 hanya saat waktunya habis. (int)fuse akan memotong 4.99 menjadi 4 dan menampilkan 0 selama satu detik penuh terakhir saat bom masih berdetak; Mathf.RoundToInt akan menampilkan 0 selama setengah detik terakhir. Hitung mundur yang lebih panjang dan ditampilkan dalam menit serta detik mengikuti aturan yang sama: bulatkan waktu ke atas menjadi detik utuh terlebih dahulu, lalu format hasilnya.
return di awal membuat BOOM tetap terlihat di layar: tanpanya, frame berikutnya akan menimpa tulisan itu dengan Fuse: 0. Teks juga memiliki warna, dan fuseText.color = Color.red mengubah warnanya menjadi merah.
Tantangan
MudahBuat meter parkir menghitung mundur waktu yang sudah dibayar.
- Di
Update(), kurangitimeLeftdenganTime.deltaTime, jangan sampai kurang dari 0, lalu tampilkanMathf.CeilToInt(timeLeft)sebagai menit dan detik:1:15. - Tombol Spasi menambahkan 30 detik, hingga
maxTime(2:00). - Pada 0, tampilkan
EXPIREDdenganColor.red. AwaliUpdate()denganif (timeLeft == 0f) return;agar tampilannya tetap begitu.
Tekan tombol “Main” dan masukkan koin: meter berhenti di 2:00. Lalu tekan tombol “Periksa”.
Coba sendiri
using UnityEngine;
using TMPro;
public class ParkingMeter : MonoBehaviour
{
public TMP_Text meterText;
public float timeLeft = 60f;
public float maxTime = 120f;
void Update()
{
// Kurangi nilai timeLeft dan tampilkan dalam menit dan detik; Space menambah 30 detik
}
}
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