Unity:实现手游中的根据时间获得体力
GameManager代码:(C#单例,不需要加载到场景)
public class GameManager
{//单例private static GameManager main;public static GameManager Main{get{if (main == null){main = new GameManager();}return main;}}private int main_vitality = -1;/// /// 玩家拥有的体力数量/// public int mainVitality{get{if (main_vitality == -1){main_vitality = PlayerPrefs.GetInt("mainVitality");}return main_vitality;}set{main_vitality = value;PlayerPrefs.SetInt("mainVitality",main_vitality);PlayerPrefs.Save();}}/// /// 体力的上限值是多少/// public int mainVitalityMax = 100;/// /// 多少秒恢复一个体力/// public int mainVitalityRestoreSecond = 180;private string get_vitality_time = "";/// /// 上次获得体力的时间/// public string getVitalityTime{get{if (get_vitality_time == ""){get_vitality_time = PlayerPrefs.GetString("GetVitalityTime");}return get_vitality_time;}set{get_vitality_time = value;PlayerPrefs.SetString("GetVitalityTime", get_vitality_time);}}/// /// 下一次恢复体力的时间/// public TimeSpan nextVitalityRestoreTime;/// /// 根据时间自然恢复体力/// /// 恢复的体力量public void AddVitalityByTime(int number){if (mainVitality + number > mainVitalityMax){mainVitality = mainVitalityMax;}else{mainVitality += number;}}}
然后是用来计算时间的类TimeManager,为Unity单例,需要挂载在空物体上并且设定为切换场景时不消失
using System;
using UnityEngine;public class TimeManager : MonoBehaviour
{private TimeSpan timeSpan;void Start(){if (PlayerPrefs.GetInt("FirstValueGet") == 0){GameManager.Main.mainVitality = GameManager.Main.mainVitalityMax;GameManager.Main.getVitalityTime = DateTime.Now.ToString("");PlayerPrefs.SetInt("FirstValueGet",1);PlayerPrefs.Save();}}private void Update(){RestoreVitality();}/// /// 获得体力的方法/// void RestoreVitality(){timeSpan = DateTime.Now - Convert.ToDateTime(GameManager.Main.getVitalityTime);if (timeSpan.TotalSeconds > GameManager.Main.mainVitalityRestoreSecond){GameManager.Main.AddVitalityByTime((int)timeSpan.TotalSeconds/GameManager.Main.mainVitalityRestoreSecond);GameManager.Main.getVitalityTime = DateTime.Now.ToString("");}else{GameManager.Main.nextVitalityRestoreTime = timeSpan;}}
}
将这两个代码设定好就可以访问GameManager里的变量实现体力随时间增加的功能
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
