Kalau kamu mau bikin game yang ada jam nya tapi jam di game ini berjalan 30 menit di dunia nyata = 24 jam di dalam game, maka ini dia solusinya:
using UnityEngine;
using UnityEngine.UI; // untuk tampilan UI, opsional
public class InGameClock : MonoBehaviour
{
public Text clockText; // Assign di Inspector jika ingin tampilkan waktu
private float secondsPerInGameDay = 1800f; // 30 menit nyata per siklus 24 jam
private float inGameSecondsPerRealSecond;
private float inGameTime; // detik dalam game dari 00:00:00
private const string saveKey = "InGameTime";
void Start()
{
float totalInGameSecondsPerDay = 24 * 3600;
inGameSecondsPerRealSecond = totalInGameSecondsPerDay / secondsPerInGameDay;
// Ambil waktu tersimpan, jika tidak ada mulai dari 0
inGameTime = PlayerPrefs.GetFloat(saveKey, 0f);
}
void Update()
{
// Update waktu in-game berdasarkan waktu nyata
inGameTime += Time.deltaTime * inGameSecondsPerRealSecond;
// Siklus ulang setiap 24 jam
if (inGameTime >= 24 * 3600)
{
inGameTime -= 24 * 3600;
}
// Kalkulasi jam, menit, detik
int hours = (int)(inGameTime / 3600);
int minutes = (int)((inGameTime % 3600) / 60);
int seconds = (int)(inGameTime % 60);
// Update UI jika ada
if (clockText != null)
{
clockText.text = string.Format("{0:D2}:{1:D2}:{2:D2}", hours, minutes, seconds);
}
}
private void OnApplicationQuit()
{
// Simpan waktu inGame saat aplikasi keluar
PlayerPrefs.SetFloat(saveKey, inGameTime);
PlayerPrefs.Save(); // pastikan tersimpan
}
}
Dia bisa otomatis tersimpan di player prefs, jadi saat player keluar game lalu masuk lagi, otomatis melanjutkan jam yang ada.