gpt4 book ai didi

c# - 一天中某个时间的 Sun Script RenderProbe

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:02 24 4
gpt4 key购买 nike

我正在尝试制作一个 unity sun 脚本,该脚本在一天中的特定时间渲染从阵列中获取的光探测器。一天从0​​-1间隔(0夜,0.25日出,0.5中午,0.75日落,1夜)

老实说,即使我检查语句 currentTimeOfDay == 0.75,当达到该值时,打印也不会发生

如何检查多个数组的语句?

   public float secondsInFullDay = 120f;
[Range(0,1)]
public float currentTimeOfDay = 0f;
private float[] floatDay = new float[4] {0f, 0.25f, 0.5f, 0.75f};
public float timeMultiplier = 1f;



void Update() {

currentTimeOfDay += (Time.deltaTime / secondsInFullDay) * timeMultiplier;

if (currentTimeOfDay >= 1) {
currentTimeOfDay = 0;
}


if(currentTimeOfDay == floatDay[0]){
reflectionProbe.RenderProbe();
print ("refresh probe");
}


}

这只在 0 值时打印

foreach (float x in floatDay){

if (x.Equals (currentTimeOfDay)){
print ("refresh probe");
}

}

L.E

我设法针对数组检查了语句,但它打印了多次,这意味着这将导致不必要的负载如果时间 timeMultiplier 设置为 10 而不是 1,则在达到该值时打印一次。

有没有办法将数组与 float 相乘并得到新数组?

private float[] floatDay = new float[4] {0, 250, 500, 750};

TimeOfDay = currentTimeOfDay * 1000 * timeMultiplier;
TimeOfDay = Mathf.Round(TimeOfDay);


foreach (float x in floatDay){
if (TimeOfDay == x){
reflectionProbe.RenderProbe();
print ("refresh probe");
}
}

L.E 2

修复了它,但看起来不那么紧凑但它可以工作

private float[] floatDay = new float[4] {0, 2500, 5000, 7500};  

TimeOfDay = currentTimeOfDay * 10000 / timeMultiplier;
TimeOfDay = Mathf.Round(TimeOfDay);


foreach (float x in floatDay){
float y = x / timeMultiplier;
if (TimeOfDay == y){
reflectionProbe.RenderProbe();
print ("refresh probe");
}
}

最佳答案

这只在 0 值时打印

foreach (float x in floatDay){
if (x.Equals (currentTimeOfDay)){
print ("refresh probe");
}
}

因为 float 永远不会准确。您的值(value)永远不会完全等于您与之比较的值(value)。

改用这个:

foreach (float x in floatDay){
if (x > currentTimeOfDay - 1e-7f && x < currentTimeOfDay + 1e-7f){
print ("refresh probe");
}
}

如果还是不行,把1e-7f改成1e-6f、1e-5f等...

关于c# - 一天中某个时间的 Sun Script RenderProbe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30773458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com