如何延迟在Unity C#中为玩家增加更多生命值?

如何延迟在Unity C#中为玩家增加更多生命值?,c#,unity3d,delay,C#,Unity3d,Delay,C#Unity3D当玩家受到攻击时,我想缓慢增加玩家生命值直到100%。 我试图通过使用PlayerHealth++在这段代码中添加更多的生命值,但添加生命值的速度非常快,可以让玩家永不磨灭。如何修复它 public class HealthScript : MonoBehaviour { [SerializeField] Text HealthText; void Start() { HealthText.text = SaveScript.Play

C#Unity3D当玩家受到攻击时,我想缓慢增加玩家生命值直到100%。 我试图通过使用PlayerHealth++在这段代码中添加更多的生命值,但添加生命值的速度非常快,可以让玩家永不磨灭。如何修复它

public class HealthScript : MonoBehaviour
{

    [SerializeField] Text HealthText;

    void Start()
    {
        HealthText.text = SaveScript.PlayerHealth + "%";

    }

    void Update()
    {
        SaveScript.PlayerHealth++;
        HealthText.text = SaveScript.PlayerHealth + "%";
    }
}

简单的方法是在脚本上放置一个interval参数——一个float,它可以是在添加运行状况之前需要过期的秒数

保留第二个变量,即时间累加器。每个更新方法都会将Time.deltaTime添加到此累加器变量

最后,如果此累加器大于间隔,则增加玩家的生命值并将累加器重置为0

公共类HealthScript:MonoBehavior
{
[工具提示(“生命值增加前的秒数”)]
公共浮动HealthInterval=5.0f;
私人浮动保险;
[序列化字段]文本健康文本;
void Start()
{
HealthText.text=SaveScript.PlayerHealth+“%”;
}
无效更新()
{
if((healthIntervalAccumulator+=Time.deltaTime)>=HealthInterval)
{
HealthInterval累加器=0.0f;
SaveScript.PlayerHealth++;
HealthText.text=SaveScript.PlayerHealth+“%”;
}
}
}

简单的方法是在该脚本上放置一个interval参数—一个float,可以是在添加运行状况之前需要过期的秒数

保留第二个变量,即时间累加器。每个更新方法都会将Time.deltaTime添加到此累加器变量

最后,如果此累加器大于间隔,则增加玩家的生命值并将累加器重置为0

公共类HealthScript:MonoBehavior
{
[工具提示(“生命值增加前的秒数”)]
公共浮动HealthInterval=5.0f;
私人浮动保险;
[序列化字段]文本健康文本;
void Start()
{
HealthText.text=SaveScript.PlayerHealth+“%”;
}
无效更新()
{
if((healthIntervalAccumulator+=Time.deltaTime)>=HealthInterval)
{
HealthInterval累加器=0.0f;
SaveScript.PlayerHealth++;
HealthText.text=SaveScript.PlayerHealth+“%”;
}
}
}

更新
每帧执行一次,因此游戏的每一帧都会增加玩家的健康。显然,当这种情况发生时,您需要添加一些条件。
Update
每帧执行一次,因此游戏的每一帧都会增加玩家的健康。当这种情况发生时,您显然需要添加一些条件