今天筆試完,不知道會不會黃,只寫出一部分思路,不過多個子節點不知道怎么處理。求各位大神指點下u3d新手,如題:
將以下代碼改成非遞回實作。
Transform FindChind(Transform parent, string name)
{
for (int i = 0; i < parent.childCount; ++i)
{
Transform child = parent.GetChild(i);
if (child.name == name)
{
return child;
}
child = FindChind(child, name);
if (child)
{
return child;
}
}
return null;
}
我寫的思路只有一點點,不知道怎么寫下去了:
Transform FindChind(Transform parent, string name)
{
for (int i = 0; i < parent.childCount; ++i)
{
Transform child = parent.GetChild(i);
If (child.name == name ) {
Return child;
}
Transform root = child.GetChild(0);
If(root.name != name && root.childCount > 0 )
{
/////////////////這部分頭腦好亂,不止從何下手//////////////////////////
while()
{
}
}
elseif(root.name == name ){
return root;
}
}
uj5u.com熱心網友回復:
沒玩過d3d,具體代碼有可能寫的不對,看看思路吧
Transform FindChind(Transform parent, string name)
{
list<Transform> l;
l.append(parent);
int i = 0;
do {
Transform ts = l.at(i);
for (int j = 0; j < ts.childCount; ++j) {
Transform child = ts.GetChild(j);
if (child.name == name) {
return child;
}
l.append(child);
}
++i;
} while (i < l.count())
return null;
}
uj5u.com熱心網友回復:
謝解惑,將未遍歷的子節點放到list后面,機智機智!!!轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/25679.html
標籤:Unity3D
