Run in Background seçeneğini kullanabilirsin
örnek vermek gerekirse ben olsam

Time.realtimeSinceStartup
kullanırdım ve
using UnityEngine;

public class EnergyManager : MonoBehaviour
{
    public int maxEnergy = 100;
    public int energyDecreaseAmount = 20;
    public float energyIncreaseInterval = 90f;

    private int energy;
    private float lastEnergyIncreaseTime;

    private void Start()
    {
        energy = maxEnergy;
        lastEnergyIncreaseTime = Time.realtimeSinceStartup;
    }

    private void Update()
    {
        float currentTime = Time.realtimeSinceStartup;

        // Belirli bir süre geçtiğinde enerjiyi artır
        if (currentTime - lastEnergyIncreaseTime >= energyIncreaseInterval)
        {
            lastEnergyIncreaseTime = currentTime;

            // Enerjiyi artır
            energy++;
            if (energy > maxEnergy)
            {
                energy = maxEnergy;
            }
        }
    }

    public void DecreaseEnergy()
    {
        energy -= energyDecreaseAmount;
        if (energy < 0)
        {
            energy = 0;
        }

        // Enerji azaldığında yapılacak işlemler
    }
}


Update() metodu her karede çağrıldığından enerji seviyesi düzenli olarak kontrol edilir ve güncellenir.
Bu şekilde, oyunun kapalı olduğu durumlarda bile enerji seviyesi güncellenir ve belirli bir süre (energyIncreaseInterval) geçtiğinde artırılır.

örnek 2 vermek gerekirse

using UnityEngine;

public class EnergyManager : MonoBehaviour
{
    public int maxEnergy = 100;
    public int energyDecreaseAmount = 20;
    public float energyIncreaseInterval = 90f;

    private int energy;
    private float lastEnergyIncreaseTime;

    private void Start()
    {
        energy = maxEnergy;
        lastEnergyIncreaseTime = PlayerPrefs.GetFloat("LastEnergyIncreaseTime", 0f);

        // Oyun kapalıyken arka planda enerji güncellemesini sağlamak için
        Application.runInBackground = true;
    }

    private void OnApplicationPause(bool pauseStatus)
    {
        if (pauseStatus)
        {
            // Oyun durduğunda son enerji güncelleme zamanını kaydet
            PlayerPrefs.SetFloat("LastEnergyIncreaseTime", lastEnergyIncreaseTime);
            PlayerPrefs.Save();
        }
        else
        {
            // Oyun tekrar devam ederken son enerji güncelleme zamanını kontrol et
            float currentTime = Time.realtimeSinceStartup;
            float timeSinceLastIncrease = currentTime - lastEnergyIncreaseTime;

            // Belirli bir süre geçtiyse enerjiyi artır
            if (timeSinceLastIncrease >= energyIncreaseInterval)
            {
                int energyIncreaseAmount = Mathf.FloorToInt(timeSinceLastIncrease / energyIncreaseInterval);
                energy += energyIncreaseAmount;
                if (energy > maxEnergy)
                {
                    energy = maxEnergy;
                }

                lastEnergyIncreaseTime = currentTime;
            }
        }
    }

    private void OnApplicationQuit()
    {
        // Oyun kapatıldığında son enerji güncelleme zamanını kaydet
        PlayerPrefs.SetFloat("LastEnergyIncreaseTime", lastEnergyIncreaseTime);
        PlayerPrefs.Save();
    }

    public void DecreaseEnergy()
    {
        energy -= energyDecreaseAmount;
        if (energy < 0)
        {
            energy = 0;
        }

        // Enerji azaldığında yapılacak işlemler
    }
}

Unity'deki OnApplicationPause ve OnApplicationQuit yöntemlerini kullanır. OnApplicationPause metodu, oyun duraklatıldığında ve tekrar devam ettiğinde çağrılırken, OnApplicationQuit metodu ise oyun kapatıldığında çağrılır.
OnApplicationPause metodunda, oyun durduğunda son enerji güncelleme zamanı kaydedilir ve oyun tekrar devam ettiğinde son enerji güncelleme zamanı kontrol edilir. Belirli bir süre (energyIncreaseInterval) geçtiyse enerji seviyesi artırılır.
OnApplicationQuit metodu ise oyun kapatıldığında son enerji güncelleme zamanını kaydeder.
Ayrıca,
Application.runInBackground = true; satırı ile oyun kapalıyken de arka planda işlemlerin devam etmesini sağlıyoruz.
Bu şekilde, oyunun açık veya kapalı olduğu durumlarda enerji seviyesi güncellenir ve belirli bir süre (energyIncreaseInterval) geçtiğinde artırılır. Enerji seviyesi arka planda tutulan son enerji güncelleme zamanı kullanılarak doğru şekilde hesaplanır ve kaydedilir.

gibi olabilir aslında