public class EnemyBehaviour : MonoBehaviour
{
public float speed; // or the speed of rotation.
public bool randomSpeed = false;
public float speedRange = 4;
private float originalSpeed;
private void Start() { originalSpeed = speed; }
private void Update()
{
if (!randomSpeed)
{
speedRange = 0;
speed = originalSpeed;
}
else speed = Random.Range(1, speedRange);
}
}
问题出在这一部分Update
:
if (!randomSpeed)
{
speedRange = 0;
speed = originalSpeed;
}
例如,如果在运行游戏时速度是 3,当我将其设置为 false 时,速度值将一直为 3,我现在无法更改它。但我希望能够将速度值更改为任何值。我希望如果我设置为 false,它会恢复到原始速度,但也能够更改为新速度,然后将原始速度更新为新速度。
我现在这样做的方式,当它是假的时,我锁定了速度。
当然,当您通过每帧的原始速度分配速度值时,它会锁定速度。
要解决它,你不应该把东西放在 Update(( 中。此外,尝试为那些受保护的公共变量使用"get set"语法。
假设您只想在单击randomSpeed复选框时为"速度"分配一次值。
private float randomSpeed
public float RandomSpeed
{
get {return randomSpeed;}
set {
randomSpeed = RandomSpeed;
if (!randomSpeed){
speed = originalSpeed;
} else {
speed = Random.Range(1, speedRange);
}
}
}