Naprawdę potrzebuję pomocy! Nie mogę zrozumieć, jak pracować z prefabrykatami i rozładowywaniem.Unity3d Praca z pamięcią: załaduj i wyładuj prefabrykaty
Mam następną sytuację.
Uruchamiam moją aplikację na iPadzie z Xcode. Wersja Unity 4.3.1 Pro. Watch korzystania z pamięci: Xcode debugowania Navigator Xcode Instruments Unity Profiler
zrobić kolejne kroki:
0) Unity rozpoczyna się od pustej sceny.
Używana pamięć Xcode Debug Navigator: 11 mb Instruments: 26.4 mb Unity Profiler: Używany sumie 13,2 zastrzeżone sumie 13,7
1) szkieletowe obciążenia z folderu Resources
prefab = Resources.Load("Room1");
Używana pamięć Xcode Debug Navigator: 30.8 mb Instruments: 49.54 mb Unity Profiler: używany łącznie 19,8 zastrzeżone łącznie 20,4
2) Utworzenie wystąpienia prefabrykatów
go = (GameObject)Instantiate(prefab);
go.name = "Room1";
Xcode Debug Navigator: 31.2 mb Instruments: 50 MB Unity Profiler: Używany sumie 20 Reserved sumie 20,7
3) Zniszcz wszystkie obiekty na scenie - pamięć nie zmieniła
Transform[] tr = FindObjectsOfType<Transform>();
for (int i = 0; i < tr.Length; i++)
{
GameObject goo = tr.gameObject;
if (goo.name != "Main Camera")
{
Destroy(goo);
goo = null;
}
}
Xcode Debug Navigator: 31.1 Instrumenty: 49.93 mb mb Unity Profiler: używane sumie 19,8 zastrzeżone sumie 20,4
4) Zadzwoń Resources.UnloadUnusedAssets();
- pamięć nie zmieniła
5) połączeń System.GC.Collect();
- pamięć nie zmieniła
6) połączeń UnloadAsset z prefabrykatów Resources.UnloadAsset(prefab);
- pamięć nie zmieniła
7) Połączenie Resources.UnloadUnusedAssets();
- pamięć częściowo oczyszczone
Xcode debugowania Navigator: 21,9 mb Instruments: 40,79 mb Unity Profiler: używany sumie 13,2 zastrzeżone sumie 13,9
w profiler widzę, że usunięte wszystkie texures, że stosowane w prefabrykatów
8) System.GC.Collect();
- pamięć nie zmieniła
9) Obciążenie pusta scena - pamięć nie zmieniła
Oto kolejny ciekawy chwila:
Kiedy aplikacja przechodzi do tła i uruchomić inną aplikację, wielkość stosowanego RAM znacznie zmniejsza się, i kiedy wzywam aplikację jedności - pamięć idzie do pierwszego rozmiaru z pustą sceną.
Mam następujące pytania:
1) Dlaczego pamięć nie czyszczone po całkowicie usunąć z prefabrykatów i UnloadUnusedAssets nazwać - widzimy go w Instruments i Xcode - ale w Profiler widzimy, że pamięć praktycznie całkowicie za darmo?
2) Czy to prawda, aby wyczyścić pamięć do rozmiaru początkowego?
3) Czy wszystkie kroki są prawidłowe, czy coś nie tak?
Można pobrać projekt testowy tutaj: http://gfile.ru/aa5on
Wielkie dzięki za odpowiedzi.
* sidenote: * Spróbuj najpierw zaktualizować Unity 3D. – Raptor