Z tego przewodnika dowiesz się, jak korzystać z wtyczki Memory Advice do Unity, by zintegrować Memory Advice API ze swoją grą na Unity.
Wymagania
Wtyczka jest obsługiwana na tych urządzeniach:
Unity 2019 z Androidem NDK r19
Unity 2020 z Androidem NDK r19
Unity 2021 z Androidem NDK r21
Unity 2022 z Androidem NDK r23
Jeśli używasz innych wersji Unity i Androida NDK, możesz napotkać nieoczekiwane problemy. Aby znaleźć wersję NDK używaną w instalacji Unity, zajrzyj do przewodnika po konfiguracji środowiska Android dla Unity.
Pobierz wtyczkę
Pobierz wtyczkę.
Importowanie wtyczki
Jest to pakiet Unity, który możesz zaimportować do projektu. Aby zaimportować wtyczkę, kliknij Assets > Import Package > Custom Package (Zasoby > Importuj pakiet > Pakiet niestandardowy) i wybierz pobrany plik .unitypackage
. Po otwarciu projektu Unity możesz też dwukrotnie kliknąć plik .unitypackage
.
Korzystanie z biblioteki
W tej sekcji opisano, jak korzystać z biblioteki.
Inicjowanie biblioteki
Musisz zainicjować bibliotekę raz podczas uruchamiania aplikacji. Aby to zrobić, dodaj do projektu ten kod:
void Start()
{
MemoryAdviceErrorCode errorCode = MemoryAdvice.Init();
if(errorCode == MemoryAdviceErrorCode.Ok)
{
Debug.Log("Memory advice init successfully");
}
}
Sonda dotycząca stanu pamięci
Stan pamięci aplikacji możesz pobrać, przeprowadzając odpytywanie biblioteki z wybranym interwałem. Jeśli musisz przeprowadzić sondowanie biblioteki, użyj funkcji MemoryAdvice_getMemoryState:
MemoryState memoryState = MemoryAdvice.GetMemoryState();
switch (memoryState)
{
case MemoryState.Ok:
//The application can safely allocate memory.
break;
case MemoryState.ApproachingLimit:
// The application should minimize memory allocation.
break;
case MemoryState.Critical:
// The application should free memory as soon as possible
// until the memory state changes.
break;
}
Skonfiguruj obserwatora
Możesz też skonfigurować obserwator i zarejestrować interfejs Memory Advice API. Funkcja obserwacyjna będzie wywoływana, gdy stan zbliży się do limitu lub do krytycznego stanu pamięci (ale nie dla stanu OK). Na przykład ten kod tworzy obserwatora i żąda powiadomienia do interfejsu Memory Advice API co 2 sekundy:
MemoryAdviceErrorCode errorCode = MemoryAdvice.RegisterWatcher(2000,
new MemoryWatcherDelegateListener((MemoryState state) =>
{
switch (memoryState)
{
case MemoryState.ApproachingLimit:
// The application should minimize memory allocation.
break;
case MemoryState.Critical:
// The application should free memory as soon as possible
// until the memory state changes.
break;
}
})
);
if(errorCode == MemoryAdviceErrorCode.Ok)
{
Debug.Log("Memory Advice watcher registered successfully");
}
Co dalej
Możesz pobrać nasz przykładowy projekt Unity, który udostępnia prosty interfejs do przydzielania i zwalniania pamięci, a także używa interfejsu Memory Advice API do monitorowania stanu pamięci.
W omówieniudodatkowych materiałów i problemów z raportowaniem dowiesz się.