2016-05-23 7 views
0

Ich versuche, Vermögenswerte zu entladen, nachdem sie zu einem Array von Objekten hinzufügen, aber es ist die Rückkehr eine Fehlermeldung, ich nur einen nach dem anderen entfernen kann, aber ich bin nicht sicher, wie man das machtUnity entfernen Asset-

object[] tempItems = Resources.LoadAll("Inventory/Weapons"); 
foreach (object i in tempItems) 
{ 
    GameObject it = (GameObject)i; 
    Debug.Log(it); 
    itemList.Add(it); 
    Debug.Log(itemList.Count); 
} 


foreach (object i in tempItems) 
{ 
    GameObject it = (GameObject)i; 
    Resources.UnloadAsset(it); 
} 

UnloadAsset nur auf einzelne Vermögenswerte verwendet werden können und nicht auf die Gameobject/Komponenten oder AssetBundles

im jetzt

UnityEngine.Object[] tempItems = Resources.LoadAll("Inventory/Weapons"); 
    foreach (UnityEngine.Object i in tempItems) 
    { 
     GameObject it = (GameObject)i; 
     Debug.Log(it); 
     itemList.Add(it); 
     Debug.Log(itemList.Count); 
    } 
    foreach (UnityEngine.Object i in tempItems) 
    { 
     Resources.UnloadAsset(i); 
    } 

Aber im noch den Fehler immer mit verwendet werden kann,

UnloadAsset may only be used on individual assets and can not be used on GameObject's/Components or AssetBundles 

das ist die Linie des Fehlers

 Resources.UnloadAsset(i); 

Antwort

0

Unload der Object nicht GameObject. Das Casting GameObject it = (GameObject)i;Resources.UnloadAsset(it); ist völlig unnötig und wahrscheinlich das Problem.

Object[] tempItems = Resources.LoadAll("Inventory/Weapons",typeof(GameObject)); 
foreach (Object i in tempItems) 
{ 
    GameObject it = (GameObject)i; 
    Debug.Log(it); 
    itemList.Add(it); 
    Debug.Log(itemList.Count); 
} 

foreach (Object i in tempItems) 
{ 
    Resources.UnloadAsset(i); 
} 

Ich schlage auch vor, Sie verwenden Objekt mit Großbuchstaben 'O'. Glaube nicht, dass es einen Unterschied machen wird, sondern nur für den Fall.

+0

Verwenden von Objekt mit einem Großbuchstabe o gibt einen Kompatibilitätsfehler zurück, auch mit unloadAsset als Vorschlag gibt den gleichen Fehler zurück – Sniffle6

+0

Object 'ist ein mehrdeutiger Verweis zwischen' UnityEngine.Object 'und' Objekt ' – Sniffle6

+0

@ Sniffle6 Modifizierte meine Antwort. Schau es dir nochmal an. Wenn ein Fehler auftritt, notieren Sie die Codezeile, von der Sie den Fehler erhalten. – Programmer