突然問題在foreach語句拉姆達:的addListener中的foreach
IEnumerator RefreshNextFrame(Part Current)
{
yield return null;
if(Current.Nodes == null)
yield break;
Current.Nodes.ForEach(n => Debug.Log(n.name));//outputs node0, node1
for(int i = 0; i < Current.Nodes.Count; i++)
{
Node node = Current.Nodes[i];
Button button = Instantiate(Resources.Load<GameObject>("Prefabs/Button")).GetComponent<Button>();
button.transform.SetParent(content);
button.GetComponentInChildren<Text>().text = node.name;
button.onClick.AddListener(delegate
{
Debug.Log(button.GetComponentInChildren<Text>().text);
});
}
}
點擊因爲這個代碼按鈕會始終輸出node1
嘗試將** Current.Nodes.ForEach(n => Debug.Log(n.name)); **行放入lambda表達式中,以查看兩個節點是否仍有您期望的名稱。也許你會在代碼的其他地方覆蓋它們而不知道。 – GregaMohorko
不是。名字,我期望。 –
此代碼在couroutine中。這有意義嗎? –