我在下面的代碼中遇到了問題。它的功能是建立一條路線,一個接一個。C#IEnumerator不可更改
currentLength = Random.Range(maxFloorLength - 2, maxFloorLength);
List<GameObject> tempList = new List<GameObject>();
for (int i = 0; i < currentLength; ++i)
{
foreach (GameObject g in pooledFloor)
{
if (!g.activeInHierarchy)
{
g.SetActive(true);
g.transform.position = startPoint + buildDirection * i;
g.transform.DOScaleY(5, 0.25f).Play();
lastFloorPositions.Add(g.transform.position);
tempList.Add(g);
break;
}
}
yield return new WaitForSeconds(0.05f);
}
雖然這正常工作,當我將其更改爲:
currentLength = Random.Range(maxFloorLength - 2, maxFloorLength);
List<GameObject> tempList = new List<GameObject>();
for (int i = 0; i < currentLength; ++i)
{
foreach (GameObject g in pooledFloor)
{
if (!g.activeInHierarchy)
{
g.transform.position = startPoint + buildDirection * i;
lastFloorPositions.Add(g.transform.position);
tempList.Add(g);
break;
}
}
}
foreach (GameObject g in tempList)
{
g.SetActive(true);
g.transform.DOScaleY(5, 0.25f).Play();
yield return new WaitForSeconds(0.05f);
}
它是所有創造之路的一個部分(就是那個應該是tempList列表的末尾)。我想要的是該腳本將所有預製件添加到列表中,然後再與他們一起做其他事情,所以我可以在兩者之間添加一些內容。我試圖將其更改爲void函數,並將這些代碼作爲ienumerator調用,更改循環類型等,但似乎沒有任何工作,我不知道爲什麼它不起作用。我使用Debug.Log檢查了它是否仍然發現超過1個預製,並且它確實存在,但它只激活並擴展其中的一個。我敢打賭,它的東西很明顯,但我就是不能看到它:/
如何看起來:
那應該怎麼看:
忘了提及 - IEnumerator內部的所有內容
不知道,但也許你可以/應該問這http://gamedev.stackexchange.com/? –
第一回合是嵌套的,第二回合不是。嘗試: –
@Kuniq檢查我的答案 –