2017-01-30 15 views
0

Я беспокою об удалении неиспользуемых/пустых элементов, вот мой код:Удалить пустые элементы

public GameObject[] ActivateTrayQuest;; 
    public GameObject[] countersForEverybody; 


void Start(){ 
    ActivateTrayQuest = GameObject.FindGameObjectsWithTag("ActivateTrayQuest"); 
    foreach (GameObject remain in ActivateTrayQuest) 
    { 
     if(ActivateTrayQuest[0] == null && ActivateTrayQuest[1] == null && ActivateTrayQuest[2] == null){ 
      Array.Resize (ref ActivateTrayQuest, 0); 
     } 
    } 

    ActivateTrayQuest[0] = ActivateTrayQuest [ActivateTrayQuest.Length - 1]; 
    ActivateTrayQuest[1] = ActivateTrayQuest [ActivateTrayQuest.Length - 2]; 
    ActivateTrayQuest[2] = ActivateTrayQuest [ActivateTrayQuest.Length - 3]; 

Я имею в виду, исключив, что, как изменение размера моего массива.

Elements that are unused

Я хочу, чтобы удалить элемент 0, 1, 2 так, что это будет больше похоже на 0,1,2 снова. Как я могу это получить?

+3

Если '' GameObject' Destroy() 'd,' FindGameObjectsWithTag() 'не будет содержать разрушенный объект, так что не будет' ActiveTrayQuest [0] == null' – MFatihMAR

+0

так, что я должен делать то сэр – TheGinxx009

+1

Ваш вопрос неясно, объясните, как объекты могут стать нулевыми? – MFatihMAR

ответ

1

Я не уверен, что это правильный ответ на проблему, но буквально удалить null элементы из массива, просто сделать это:

ActivateTrayQuest = ActivateTrayQuest.Where(x=>x != null).ToArray(); 

Вам также необходимо using System.Linq; в верхней части файл.

+0

Это не сработает и сэр. – TheGinxx009

+0

@ TheGinxx009 - Тогда вам нужно быть более четким в том, что вам нужно. –

+0

https://forum.unity3d.com/threads/serializehelper-free-save-and-load-utility-de-serialize-all-objects-in-your-scene.338148/ Именно благодаря этой экономии и загрузке система сэр. Все мои объекты в моей текущей сцене будут перезаписаны и изменят все мои объекты в объекты, объекты в моей папке prefab – TheGinxx009