Skor Tertinggi
Termasuk bagian Membangun Game Sungguhan dalam perjalanan Unity di Coddy. Pelajaran 24 dari 56.
Skor tertinggi adalah hasil terbaik dari setiap permainan, jadi skor ini disimpan di PlayerPrefs dan hanya berubah saat sebuah permainan melampauinya. Meja pinball ini memeriksa skor saat bola terakhir habis:
void GameOver()
{
int best = PlayerPrefs.GetInt("PinballBest", 0);
if (score > best)
{
PlayerPrefs.SetInt("PinballBest", score);
PlayerPrefs.Save();
Debug.Log("New high score: " + score);
}
}Perbandingan itulah yang menentukan apakah skor tersebut menjadi skor tertinggi. Tanpanya, permainan dengan skor 300 setelah skor terbaik 5000 akan menyimpan 300, dan rekor itu pun hilang. Bandingkan dengan skor terbaik yang tersimpan, bukan dengan nilai yang dimulai dari 0 di setiap permainan: field yang tidak memuat apa pun bernilai 0 setelah setiap permainan dimulai ulang, sehingga skor apa pun akan melampauinya. score > best mempertahankan rekor lama jika skornya sama, sedangkan score >= best akan menganggap skor yang sama sebagai skor tertinggi baru.
Untuk menampilkan skor tertinggi selama permainan, muat nilainya ke dalam field di Start() lalu tampilkan field tersebut. Saat sebuah permainan melampaui skor itu, perbarui field, PlayerPrefs, dan teks secara bersamaan agar tampilan layar dan nilai yang tersimpan selalu sama.
Tantangan
SedangPompa Balon: tahan Space untuk memompa udara ke dalam balon, 20 poin per detik, lalu lepaskan untuk mengumpulkan poin. Jika memompa melewati 100, balon akan meletus dan menghasilkan 0 poin. Proses pemompaan, balon meletus, dan poin sudah ditulis, lalu saat ronde berakhir, EndRound() dipanggil satu kali, dengan skor ronde di points. Tambahkan skor tertinggi yang disimpan dengan kunci BestPoints:
- Di
Start(), muat skor terbaik kebest(0 untuk pemain baru), agarShowBest()menampilkannya. - Di
EndRound(), saatpointsmengalahkan skor terbaik, simpan nilainya, tampilkan, dan tampilkannewBestText. Ronde yang tidak mengalahkan skor terbaik tidak mengubah apa pun.
Tekan Play dan pompa beberapa balon (Stop lalu Play akan memulai ronde baru), lalu tekan Check.
Coba sendiri
using UnityEngine;
using TMPro;
public class BalloonPump : MonoBehaviour
{
public TMP_Text pointsText;
public TMP_Text bestText;
public GameObject newBestText;
public float pumpRate = 20f;
private float air;
private int points;
private int best;
private bool roundOver;
void Start()
{
ShowBest();
}
void Update()
{
if (roundOver) return;
if (Input.GetKey(KeyCode.Space))
{
air += pumpRate * Time.deltaTime;
transform.localScale = Vector3.one * (1f + air / 50f);
pointsText.text = "Points: " + Mathf.FloorToInt(air);
if (air > 100f)
{
points = 0;
pointsText.text = "Pop! Points: 0";
GetComponent<Renderer>().enabled = false;
roundOver = true;
EndRound();
}
}
else if (Input.GetKeyUp(KeyCode.Space))
{
points = Mathf.FloorToInt(air);
pointsText.text = "Points: " + points;
roundOver = true;
EndRound();
}
}
void EndRound()
{
// Simpan rekor terbaik baru di sini
}
void ShowBest()
{
bestText.text = "Best: " + best;
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Membangun Game Sungguhan
4Scene dan Level
Muat SceneMulai Ulang LevelLevel BerikutnyaPertahankan Antar-SceneRekap: Pilih Level10Proyek: Platformer 3D
LintasanPlatform Bergerak2Tombol dan Layar
Tombol dan onClickLambdaMenghubungkan di InspectorPanel Aktif dan NonaktifBilah KesehatanRangkuman: Toko Upgrade5Menyimpan dengan PlayerPrefs
Simpan AngkaMuat dengan Nilai DefaultSkor TertinggiSimpan PengaturanUlasan: Koin di Bank