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
是否有变化,以及modifymovementSpeeds
是否有变化。但是如何检查是否有更改?首先,确保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;
}
}
}