代码:
public IEnumerator RefreshFoodInfo()
{
yield return new WaitForEndOfFrame();
for (int i = 0; i < foodPanel.transform.childCount; i++)
{
GameObject go = foodPanel.transform.GetChild(i).gameObject;
Destroy(go);
}
foreach (var temp in CSJManager.instance.foodManager.foodDic)
{
FoodData food = temp.Value;
GameObject item = Instantiate(Resources.Load("Prefabs/FoodToggle", typeof(GameObject))) as GameObject;
item.transform.SetParent(foodPanel.transform, false);
item.name = food.name;
item.transform.FindChild("TextName").GetComponent<Text>().text = food.name;
item.transform.FindChild("TextIndex").GetComponent<Text>().text = food.index.ToString();
Toggle toggle = item.GetComponent<Toggle>();
toggle.onValueChanged.AddListener(
delegate(bool isOn)
{
this.OnToggleValueChanged(isOn, item);
}
);
toggle.group = foodPanel.GetComponent<ToggleGroup>();
curFood = null;
}
buttonAdd.SetActive(true);
buttonUpdate.SetActive(false);
buttonDelete.SetActive(false);
}
public void OnToggleValueChanged(bool isOn, GameObject obj)
{
if (isOn)
{
curFood = obj;
inputFieldIndex.text = obj.transform.FindChild("TextIndex").GetComponent<Text>().text;
inputFieldName.text = obj.transform.FindChild("TextName").GetComponent<Text>().text;
buttonAdd.SetActive(false);
buttonUpdate.SetActive(true);
buttonDelete.SetActive(true);
}
}
obj始终为最后一个实例的obj。
错误原因:函数返回值为IEnumerator。 RefreshFoodInfo() 不能为协程函数。