资源简介
休闲游戏只有有体力才能进入关卡,每玩一关会扣除一个体力,当体力不足时不能继续游戏,需要购买。本功能是自动恢复体力,游戏离线也会恢复体力。
代码片段和文件信息
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;
public class EnergyJudge : MonoBehaviour
{
[SerializeField]
private Text energyCountTxt;
[SerializeField]
private Text timeCountTxt;
[SerializeField Header(“surPlusTime转化成时间格式之后的字符串“)]
private string strTime;
TimeSpan spanTime;
[SerializeField Header(“恢复下一点体力剩余时间“)]
private int surPlusTime = 0;//恢复下一点体力剩余时间
[SerializeField Header(“600秒 即10分钟恢复一点体力“)]
public int recoverTimeLength = 600;//600秒 即10分钟恢复一点体力
void Start()
{
Debug.LogFormat(“进入游戏时间{0}“ DateTime.Now);
energyCountTxt.text = GetEnergyCount.ToString();
spanTime = DateTime.Now - GetEndGameTime();
int totalLeaveTime = (int)Math.Floor(spanTime.TotalSeconds);//游戏离开总时间
Debug.LogFormat(“游戏离线时长{0} 秒“ totalLeaveTime);
int countRecover = totalLeaveTime / recoverTimeLength;//离线了多少个10分钟
SetEnergyCount(GetEnergyCount + countRecover);//保存更新之后的体力值
if (GetEnergyCount >= 20)//如果体力大于20 就把时间时间倒计时设置为不可见 同时不进行倒计时
{
SetGameobjectState(timeCountTxt.gameobject false);
}
else //体力 还是没有恢复满
{
int seconds = totalLeaveTime % recoverTimeLength;//求出余数
if (GetGameOverTime > seconds)
{
surPlusTime = GetGameOverTime - seconds;
}
else if (GetGameOverTime <= seconds)//上次退出时 剩余恢复体力时间,小于离线时间去整之后的余数,说明体力还可以加一点
{
surPlusTime = recoverTimeLength - (seconds - GetGameOverTime);
SetEnergyCount(GetEnergyCount + 1);//保存更新之后的体力值 体力加1
if (GetEnergyCount >= 20)
{
SetGameobjectState(timeCountTxt.gameobject false);
}
}
Debug.LogFormat(“恢复下一点体力剩余时间{0}“ surPlusTime);
}
FormatLongToTimeStr(surPlusTime);
timeCountTxt.text = strTime;
energyCountTxt.text = GetEnergyCount.ToString();
}
void Update()
{
//测试体力增加减少
TestReduceEnergy();
CalcTimer();
}
#region 计时器
public float timer = 0;
///
/// 体力值是否满了 20为满
///
public bool IsFullEnergy
{
get
{
if (GetEnergyCount < 20)
{
return false;
}
return true;
}
}
void CalcTimer()
{
if (IsFullEnergy)//如果体力是满的,就让恢复体力的剩余时间为0
{
timer = 0;
surPlusTime = recoverTimeLength;
timeCountTxt.text = strTime;//把转化成时间格式的字符串更新到UI
SetGameobjectState(timeCountTxt.gameobject false);
return;
}
else
{
SetGameobjectState(timeCountTxt.gameobject true);
}
time
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 138104 2019-12-16 20:54 EnergyJudge\1576500899(1).jpg
文件 130899 2019-12-16 20:55 EnergyJudge\1576500956(1).jpg
文件 7612 2019-12-16 20:30 EnergyJudge\EnergyJudge.cs
文件 1067020 2019-12-16 20:42 EnergyJudge\GIF.gif
目录 0 2019-12-16 20:56 EnergyJudge
----------- --------- ---------- ----- ----
1343635 5
评论
共有 条评论