using AX.MessageSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class BurnTimer : MonoBehaviour { private static string burnTime = ""; private static float burnHours = 0; public static bool isBurning=false; public Transform p_firenormal; public Transform p_fireliquid; void Start() { if(p_firenormal ==null) { p_firenormal = transform.Find("P_FireNormal").transform; } if (p_fireliquid == null) { p_fireliquid=GameObject.Find("P_FireLiquidLevel").transform; } MessageDispatcher.AddListener("BurnTimeSet", BurnTimeSet); } void OnDestroy() { MessageDispatcher.RemoveListener("BurnTimeSet", BurnTimeSet); } void BurnTimeSet(IMessage obj) { if(p_fireliquid !=null && p_firenormal != null) { //如果没有火了,以当前时间为结束时间计算燃烧时间 if (p_firenormal.childCount == 0 && p_fireliquid.childCount == 0) { isBurning = false; burnTime = TIME_SYNC.time; DateTime time = Convert.ToDateTime(burnTime); TimeSpan duration = time.TimeOfDay; burnHours = (float)duration.TotalHours; } } } public static float BurnTime { get { if (isBurning) //如果还在燃烧,就以当前时间为结束计算燃烧时间 { burnTime = TIME_SYNC.time; DateTime time = Convert.ToDateTime(burnTime); TimeSpan duration = time.TimeOfDay; burnHours = (float)duration.TotalHours; } //如果没有燃烧,一种情况是没有设置火,此时burnHours返回初始值0 //另一情况是火全灭,burnHours已在BurnTimeSet方法中赋值 return burnHours; } } }