Jump to content
Sign in to follow this  
AdrianP35

ANSWERED Barra de energía en tiempo real

Recommended Posts

Buenos días a todos, antes de nada agradeceros la lectura y/o participación de la comida de cabeza que llevo entre manos.

Estoy programando un juego de naves básico para android, sin embargo, quiero implementar un sistema de energía que permita al jugador acceder a dichos niveles. La barra de energía se llenaría conforme pasan 2 minutos de la vida real, teniendo un máximo de 100 puntos de energía.

El problema principal es que por mucho que busco (también tiene que ver poco perfecto inglés xD), no encuentro como hacer que el sistema funcione aún con la aplicación cerrada.

Cualquier idea o comentario será más que bienvenido.

Reitero mis gracias y un saludo!!

 

Share this post


Link to post
Share on other sites

Con el app cerrada en adnroid? Todo un tema de conceptos en el diseño de apps. De entrada el intent por defecto de Unity no permite eso. Deberás tener otro tipo de app nativa de android que esté en background para que pueda actualizar los datos. Si es posible un app de Unity con el intent necesario, pues mejor, pero ni idea si ya se puede hacer.

  • Like 1

Share this post


Link to post
Share on other sites

1 - Ya cuenta con una estructura de datos para tu información.

2 - Tienes una función que captura el tiempo desde el último "Add Energy".

3 - Cuando cierras la app guardas la fecha y hora.

4 - Cuando abres la aplicación cargas la hora y la comparas para saber cuantos minutos pasaron.

5 - En un futuro si quieres evitar hagan trampa cerrando y cambiando la hora del juego podes encriptar el dato guardado y obtener la hora desde un servidor NTP.

public class GameInfo {
    public DateTime LastAddEnergy { get; set; }

    public int GetEnergyAvailable (int minutes) {
        int amount = Mathf.CeilToInt ((GetCurrentTime () - LastAddEnergy).TotalMinutes / minutes);
        if (amount != 0) LastAddEnergy = GetCurrentTime ();
        return amount;
    }

    private DateTime GetCurrentTime () {
        return DateTime.Now; // O Lo obtenes desde un servidor NTP
    }

    public void Save () {
        PlayerPref.SetString ("date_addEnergy", LastAddEnergy.ToString ());
    }

    public void Load () {
        if (PlayerPref.ExistKey ("date_addEnergy"))
            LastAddEnergy = new DateTime (PlayerPref.GetString ("date_addEnergy"))
    }
}

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...