AdrianP35 1 Report post Posted July 22, 2020 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
iRobb 775 Report post Posted July 22, 2020 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. 1 Share this post Link to post Share on other sites
francoe1 536 Report post Posted July 22, 2020 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