【发布时间】:2022-06-15 20:32:47
【问题描述】:
几天前我开始了一个新项目,一个类似于 MOBA 的测试,并且大部分进展顺利。目前我在将缓慢效果或增益/减益系统导入游戏时遇到困难。确切的问题是计时器我需要更改角色的速度值,但我不能在协程中使用 ref/out 参数。我尝试了一些其他的事情,比如使用调用或使用函数,但他们只是没有做我想做的事。感谢所有反馈,并在此先感谢
代码如下:
协程:
public IEnumerator ApplyDebuff(ref float stat, float percentage, float duration)
{
float originalValue = stat;
float timeStamp = Time.time;
while (Time.time < timeStamp + duration)
{
float debufValue = percentage / 100 * originalValue;
stat -= debufValue;
yield return null;
}
stat = originalValue;
}
我调用协程的地方
private void CheckForCollision()
{
Collider[] colliders = Physics.OverlapSphere(position, scale, layerMask);
foreach(Collider c in colliders)
{
c.TryGetComponent<PlayerController>(out PlayerController player);
player.ApplyDebuff(ref player.speed, 70, 5);
player.TakeDamage(50);
Destroy(gameObject);
}
}
【问题讨论】:
-
为什么不将
PlayerController作为参数传递?它不是那么干净,但应该可以工作
标签: unity3d