Z tego przewodnika dowiesz się, jak używać wtyczki Memory Advice w Unity, aby zintegrować interfejs Memory Advice API z grą w Unity.
Wymagania
Wtyczka jest obsługiwana w tych systemach:
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 pakietu Android NDK, możesz napotkać nieoczekiwane problemy. Aby sprawdzić wersję NDK używaną przez Twoją instalację Unity, zapoznaj się z przewodnikiem po konfigurowaniu środowiska Androida w Unity.
Pobieranie wtyczki
Pobierz wtyczkę.
Importowanie wtyczki
Wtyczka jest pakietem Unity, który możesz zaimportować do projektu. Aby zaimportować wtyczkę, kliknij Assets > Import Package > Custom Package (Zasoby > Importuj pakiet > Własny pakiet) i wybierz pobrany plik .unitypackage
. Możesz też dwukrotnie kliknąć plik .unitypackage
po otwarciu projektu Unity.
Korzystanie z biblioteki
Z tej sekcji dowiesz się, jak korzystać z biblioteki.
Inicjowanie biblioteki
Bibliotekę trzeba zainicjować raz po uruchomieniu 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");
}
}
Sprawdzanie stanu pamięci
Stan pamięci aplikacji możesz odzyskać, odpytując bibliotekę w wybranym przez siebie odstępie czasu. Używaj funkcji MemoryAdvice_getMemoryState za każdym razem, gdy chcesz sprawdzić stan biblioteki:
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;
}
Konfigurowanie obserwatora
Możesz też skonfigurować obserwatora i zarejestrować interfejs Memory Advice API. Funkcja obserwatora zostanie wywołana, gdy stan będzie zbliżać się do limitu lub osiągnie krytyczny stan pamięci (ale nie w przypadku stanu ok). Na przykład ten kod tworzy obserwatora i co 2 sekundy wysyła żądanie powiadomienia z interfejsu Memory Advice API:
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 zawiera prosty interfejs użytkownika do przydzielania i zwalniania pamięci oraz korzysta z interfejsu Memory Advice API do monitorowania stanu pamięci.
Więcej informacji znajdziesz w omówieniu, dodatkowych materiałach i informacjach o zgłaszaniu problemów.