Удаление детей в НГУИ - PullRequest
0 голосов
/ 29 мая 2018

У меня нет проблем с удалением потомков других операторов, но это 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 утверждений.В чем может быть проблема?Может ли кто-нибудь указать мне на это:)

...