我不知道爲什麼我的腳本在統一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不在那裏。 –