У меня нет проблем с удалением потомков других операторов, но это 1 утверждение довольно странно.
Вот мой код удаления потомков в NGUI
void DeleteChildrens(Transform t)
{
NGUITools.DestroyChildren(t);
}
Теперь вот как я его использую.
[SerializeField] Transform[] pos_big_road = null;
[SerializeField] Transform[] pos_bead_road = null;
[SerializeField] Transform[] pos_big_eye_road = null;
private myFunction(bool success, ...){
if(g-number == 1){
DeleteChildrens(pos_big_road[0]); //--> THIS IS HOW I USE THE DeleteChildrens().
DeleteChildrens(pos_bead_road[0]);
//first statement met successfully
foreach(string previousValue in newChars){
GameObject bigroad = Instantiate(prefab_big_road[0]) as GameObject;
bigroad.transform.SetParent(pos_big_road[0]);
bigroad.transform.localScale = Vector3.one
}
//second statement met successfully
foreach(string previousValue2 in newChars){
GameObject beadroad = Instantiate(prefab_bead_road[0]) as GameObject;
beadroad.transform.SetParent(pos_bead_road[0]);
beadroad.transform.localScale = Vector3.one;
}
}
}
Эти 2 foreach()
оператор работает правильно, и потомки могут быть удалены гладко.
То, что я пытаюсь здесь сделать, похоже на функциональность refresh
.
А теперь вот моя запутанная часть, которая DeleteChildrens()
ведет себя не так, как я ожидаю.
[SerializeField] Transform[] pos_big_road = null;
[SerializeField] Transform[] pos_bead_road = null;
[SerializeField] Transform[] pos_big_eye_road = null;
private myFunction(bool success, ...){
if(g-number == 1){
DeleteChildrens(pos_big_road[0]); //--> THIS IS HOW I USE THE DeleteChildrens().
DeleteChildrens(pos_bead_road[0]);
//first statement met successfully
foreach(string previousValue in newChars){
GameObject bigroad = Instantiate(prefab_big_road[0]) as GameObject;
bigroad.transform.SetParent(pos_big_road[0]);
bigroad.transform.localScale = Vector3.one
}
//second statement met successfully
foreach(string previousValue2 in newChars){
GameObject beadroad = Instantiate(prefab_bead_road[0]) as GameObject;
beadroad.transform.SetParent(pos_bead_road[0]);
beadroad.transform.localScale = Vector3.one;
}
}
//The messed up part
for (int col = 0; col < table.GetLength(0); col++)
{
for (int row = 0; row < table.GetLength(1); row++)
{
//more codes here
}
}
if (redBead)
{
if (isWholeColumnNull)
{
NGUITools.SetActive(p, false);
}
else
{
p = Instantiate(prefab_big_eye_road[0]) as GameObject;
p.transform.SetParent(pos_big_eye_road[0]);
p.transform.localScale = Vector3.one;
p.GetComponent<UISprite>().spriteName = "symble_banker_bigroad-bigeyeroad";
NGUITools.SetActive(p, true);
}
}
if (blueBead)
{
if (isWholeColumnNull)
{
NGUITools.SetActive(p, false);
}
else
{
p = Instantiate(prefab_big_eye_road[0]) as GameObject;
p.transform.SetParent(pos_big_eye_road[0]);
p.transform.localScale = Vector3.one;
p.GetComponent<UISprite>().spriteName = "symble_player_bigroad-bigeyeroad";
NGUITools.SetActive(p, true);
}
}
}
Когда я пытаюсь поместить этот код выше вместе с другим
DeleteChildrens(pos_big_road[0]);
DeleteChildrens(pos_bead_road[0]);
DeleteChildrens(pos_big_eye_road[0]);
Этот
DeleteChildrens(pos_big_eye_road[0]);
просто удаляет детей и никогда не создает егоопять же в отличие от других 2 утверждений.В чем может быть проблема?Может ли кто-нибудь указать мне на это:)