C# 如何检查更新中的速度值是否已更改,然后设置新的速度值?

C# 如何检查更新中的速度值是否已更改,然后设置新的速度值?,c#,unity3d,C#,Unity3d,在脚本的顶部: public float constantSpeed; private float lastSpeed; 在Update()中,如果我在游戏运行时在Inspector中更改了constantSpeed,我想在Update()中实时更改: 这是我设置速度的方式: for (int i = 0; i < instancesToMove.Length; i++) { movementSpeeds[i] = constantSpeed; } for(int i=0;i

在脚本的顶部:

public float constantSpeed;
private float lastSpeed;
Update()
中,如果我在游戏运行时在Inspector中更改了
constantSpeed
,我想在
Update()
中实时更改:

这是我设置速度的方式:

for (int i = 0; i < instancesToMove.Length; i++)
{
    movementSpeeds[i] = constantSpeed;
}
for(int i=0;i

但是我需要在
Update()
中创建它
lastSpeed
应为helper float,以检查
constantSpeed
是否有变化,以及modify
movementSpeeds
是否有变化。但是如何检查是否有更改?

首先,确保
lastSpeed
设置为
constantSpeed
的初始值,这可能最好在
Start()中完成

然后在
Update()
中,您可以轻松检查
constantSpeed
是否已更改:

void Update() {
    if (lastSpeed != constantSpeed) {
        lastSpeed = constantSpeed;

        for (int i = 0; i < instancesToMove.Length; i++) {
            movementSpeeds[i] = constantSpeed;
        }
    }
}
void Update(){
if(lastSpeed!=恒定速度){
最后速度=恒定速度;
对于(int i=0;i
如果(lastSpeed!=constantSpeed)
很好,但不要像这样比较浮点数在UnityGood point中,我肯定不会比较两个浮点数是否相等,但如果检查的目的之一是将它们设置为彼此相等,那么检查不相等是否被认为是不好的做法?我想这只是一般的坏习惯。使用
Mathf.approximaty()
我想如果
,这没关系=
=
。它有时会失败,并且会引入难以发现和修复的bug。因此,
Mathf.近似
是正确的方法。
void Start() {
    lastSpeed = constantSpeed;
}
void Update() {
    if (lastSpeed != constantSpeed) {
        lastSpeed = constantSpeed;

        for (int i = 0; i < instancesToMove.Length; i++) {
            movementSpeeds[i] = constantSpeed;
        }
    }
}