我不知道为什么我的脚本在统一c#中总是得到空?Array.FindIndex总是在统一C中为空#
public class WeatherControl : MonoBehaviour {
public GameObject Rain;
public int[] RainTime = new int[]{6,7,8,9,10,18,19,20,21,22,16};
int day;
System.DateTime dates;
// Use this for initialization
void Start() {
dates = System.DateTime.UtcNow;
day = (int) dates.Day;
//day = 16;
Debug.Log ("DAY : " + day);
int posRain = System.Array.FindIndex (RainTime, x => x.Equals(16));
Debug.Log ("POS RAIN : " + posRain);
if (posRain >= 0) {
Rain.SetActive (true);
} else {
Rain.SetActive (false);
}
}
}
我的变量INT posRain总是返回-1即使在阵列存在价值包含它。变量日包含16。我把它手动并输入16。但总是返回-1。 我不知道为什么。
我也尝试过这样:
int posRain = System.Array.IndexOf (RainTime, day);
这一直返回-1了。
我在网上的C#测试这里测试它:https://csharppad.com/
它工作在它返回10
但在统一的C#编辑器是不同的总是返回-1。
有人可以解释发生了什么?
感谢
丹尼斯
如何简单地尝试x == 16而不是x.equals(16)? –
我没有看太多你的代码,但你的数组变量是公开的,这使得unity在检查器中序列化它。检查员对该字段的任何值都将覆盖您设置的代码值。所以我猜测这个数组在检查器中没有值或者没有代码中的值。 “-1”值意味着它不存在于列表中。 – Maakep
@PiotrKamoda它是一样的并返回-1。弗雷德里克我猜你在这里有点儿不对。我终于找到了答案。这不是关于序列化。但是它将重置检查员的价值。或重新附加脚本。所以所有数组值的大小都会更新。当你说督察的价值时,我得到了这个。我检查它,并且右边的值16不在那里。 –