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



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 + "%";
}
}

简单的方法是在该脚本上放置一个间隔参数-一个浮点值,它可以是在添加运行状况之前需要过期的秒数。

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

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

public class HealthScript : MonoBehaviour
{
[Tooltip("How long in seconds before health is incremented")]
public float HealthInterval = 5.0f;

private float healthIntervalAccumulator;

[SerializeField] Text HealthText;
void Start()
{
HealthText.text = SaveScript.PlayerHealth + "%";
}
void Update()
{
if ((healthIntervalAccumulator += Time.deltaTime) >= HealthInterval)
{
healthIntervalAccumulator = 0.0f;
SaveScript.PlayerHealth++;
HealthText.text = SaveScript.PlayerHealth + "%";
}
}
}

最新更新