ProjectDDD/Assets/_Datas/SLShared/SLUnity/UnitSytem/View/UnitViewHP.cs
2025-06-17 20:47:57 +09:00

72 lines
2.4 KiB (Stored with Git LFS)
C#

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;
}
}
}