using Superlazy; using UnityEngine; public class UnitViewHP : UnitViewComponent { public override void Init() { } public override void Bind() { } public override void Unbind() { if (Entity.HasChild("ShowHP")) Entity["ShowHP"] = false; if (Entity.HasChild("ShowShield")) Entity["ShowShield"] = false; if (Entity.HasChild("ShowMaxHP")) Entity["ShowMaxHP"] = false; if (Entity.HasChild("FollowHP")) Entity["FollowHP"] = false; if (Entity.HasChild("BeforeHP")) Entity["BeforeHP"] = false; if (Entity.HasChild("BeforeHPKeepTime")) Entity["BeforeHPKeepTime"] = false; } private void Update() { if (Entity.HasChild("HP")) { Entity["ShowHP"] = Entity["HP"]; Entity["ShowShield"] = Entity["HP"] + Entity["Shield"]; Entity["ShowMaxHP"] = Entity["ShowShield"] > Entity["MaxHP"] ? Entity["ShowShield"] : Entity["MaxHP"]; if (Entity["FollowHP"] < Entity["ShowHP"]) { Entity["FollowHP"] = Entity["ShowHP"]; Entity["BeforeHPKeepTime"] = 0; } else if (Entity["FollowHP"] > Entity["ShowHP"]) { if (Entity["BeforeHP"] != Entity["ShowHP"]) { Entity["BeforeHPKeepTime"] = 0; } else { Entity["BeforeHPKeepTime"] += Time.deltaTime; } if (Entity["BeforeHPKeepTime"] >= SLSystem.Data["Default"]["HPFollowWaitDelay"]) { Entity["FollowHP"] = Mathf.Lerp( Entity["FollowHP"], Entity["ShowHP"], Time.deltaTime / SLSystem.Data["Default"]["HPFollowDuration"] ); } } Entity["BeforeHP"] = Entity["ShowHP"]; } else { if (Entity.HasChild("ShowHP")) Entity["ShowHP"] = false; if (Entity.HasChild("ShowShield")) Entity["ShowShield"] = false; if (Entity.HasChild("ShowMaxHP")) Entity["ShowMaxHP"] = false; if (Entity.HasChild("FollowHP")) Entity["FollowHP"] = false; if (Entity.HasChild("BeforeHP")) Entity["BeforeHP"] = false; if (Entity.HasChild("BeforeHPKeepTime")) Entity["BeforeHPKeepTime"] = false; } } }