Integrowanie dostawy zasobów (Unity)

Podczas integracji dostarczania zasobów gry Unity mogą uzyskiwać dostęp do pakietów zasobów za pomocą Addressables lub AssetBundles. Addressables to nowsze i zalecane rozwiązanie do dostarczania zasobów w grach utworzonych w Unity 2019.4 lub nowszej wersji, natomiast AssetBundles obsługuje pakiety zasobów w Unity 2017.4 i 2018.4.

Unity Addressables

Gry utworzone za pomocą Unity 2019.4 lub nowszej wersji powinny używać Addressables do dostarczania zasobów na Androidzie. Unity udostępnia interfejs Play Asset Delivery (PAD) API do obsługi pakietów zasobów Androida za pomocą Addressables. Więcej informacji o korzystaniu z Addressables znajdziesz w tych materiałach:

Używanie plików AssetBundle

Gry utworzone za pomocą Unity 2017.4 i 2018.4 mogą używać plików AssetBundle do dostarczania zasobów na Androidzie. Pliki AssetBundle Unity zawierają zserializowane zasoby, które mogą być wczytywane przez silnik Unity podczas działania aplikacji. Te pliki są przeznaczone na konkretną platformę (np. Androida) i można ich używać w połączeniu z pakietami zasobów. Najczęściej jeden plik AssetBundle jest pakowany do jednego pakietu zasobów, który ma taką samą nazwę jak AssetBundle. Jeśli chcesz mieć większą elastyczność podczas tworzenia pakietu zasobów, skonfiguruj go za pomocą interfejsu API.

W czasie działania użyj klasy Play Asset Delivery for Unity, aby pobrać pakiet AssetBundle spakowany w pakiecie zasobów.

Wymagania wstępne

  1. Skonfiguruj środowisko programistyczne:

OpenUPM-CLI

Jeśli masz zainstalowany interfejs wiersza poleceń OpenUPM, możesz zainstalować rejestr OpenUPM za pomocą tego polecenia:

openupm add com.google.play.assetdelivery

OpenUPM

  1. Otwórz ustawienia menedżera pakietów, wybierając w menu Unity opcję Edit > Project Settings > Package Manager (Edytuj > Ustawienia projektu > Menedżer pakietów).

  2. Dodaj OpenUPM jako rejestr o określonym zakresie do okna Menedżera pakietów:

    Name: package.openupm.com
    URL: https://package.openupm.com
    Scopes: com.google.external-dependency-manager
      com.google.play.common
      com.google.play.core
      com.google.play.assetdelivery
      com.google.android.appbundle
    
  3. Otwórz menu menedżera pakietów, wybierając w Unity opcję Okno > Menedżer pakietów.

  4. W menu zakresu menedżera wybierz Moje rejestry.

  5. Wybierz pakiet wtyczki Google Play Integrity do Unity z listy pakietów i naciśnij Zainstaluj.

Importuj z GitHuba

  1. Pobierz najnowszą wersję .unitypackage z GitHuba.

  2. Zaimportuj plik .unitypackage, wybierając opcję menu Unity Zasoby > Importuj pakiet > Pakiet niestandardowy i importując wszystkie elementy.

  1. Tworzenie pakietów AssetBundle w Unity

Konfigurowanie pakietów AssetBundle za pomocą interfejsu

  1. Skonfiguruj każdy pakiet AssetBundle w pakiecie zasobów:

    1. Wybierz Google > Android App Bundle > Asset Delivery Settings (Google > Android App Bundle > Ustawienia dostarczania zasobów).
    2. Aby wybrać foldery, które bezpośrednio zawierają pliki AssetBundle, kliknij Dodaj folder.

    Przycisk Dodaj folder w ustawieniach dostarczania zasobów w Unity

  2. W przypadku każdego pakietu zmień Tryb dostarczania na Czas instalacji, Szybkie pobieranie lub Na żądanie. Usuń błędy lub zależności i zamknij okno.

    Selektor trybu dostarczania pakietu w Unity

  3. Aby utworzyć pakiet aplikacji, kliknij Google > Build Android App Bundle (Google > Utwórz pakiet aplikacji na Androida).

  4. (Opcjonalnie) Skonfiguruj pakiet aplikacji tak, aby obsługiwał różne formaty kompresji tekstur.

Konfigurowanie pakietów zasobów za pomocą interfejsu API

Dostarczanie zasobów możesz skonfigurować za pomocą skryptów edytora, które można uruchamiać w ramach automatycznego systemu kompilacji.

Użyj klasy AssetPackConfig, aby określić, które zasoby mają być uwzględnione w kompilacji pakietu Android App Bundle, oraz tryb dostarczania zasobów. Te pakiety zasobów nie muszą zawierać AssetBundle.

public void ConfigureAssetPacks {
   // Creates an AssetPackConfig with a single asset pack, named
   // examplePackName, containing all the files in path/to/exampleFolder.
   var assetPackConfig = new AssetPackConfig();
   assetPackConfig.AddAssetsFolder("examplePackName",
                                   "path/to/exampleFolder",
                                   AssetPackDeliveryMode.OnDemand);

   // Configures the build system to use the newly created assetPackConfig when
   // calling Google > Build and Run or Google > Build Android App Bundle.
   AssetPackConfigSerializer.SaveConfig(assetPackConfig);

   // Alternatively, use BundleTool.BuildBundle to build an App Bundle from script.
   BuildBundle(new buildPlayerOptions(), assetPackConfig);
}

Możesz też użyć metody statycznej BuildBundle w klasie Bundletool, aby wygenerować pakiet Android App Bundle z pakietami zasobów, podając BuildPlayerOptions i AssetPackConfig.

Samouczek z instrukcjami znajdziesz w ćwiczeniach z programowania dotyczących używania Play Asset Delivery w grach Unity.

Integracja z interfejsem Play Asset Delivery Unity API

Interfejs API Play Asset Delivery Unity udostępnia funkcje żądania pakietów zasobów, zarządzania pobieraniem i uzyskiwania dostępu do zasobów. Najpierw dodaj do projektu wtyczkę Unity.

Funkcje, których używasz w interfejsie API, zależą od sposobu utworzenia pakietów zasobów.

Jeśli pakiety zasobów zostały utworzone za pomocą interfejsu wtyczki, wybierz Pakiety zasobów skonfigurowane za pomocą wtyczki.

Jeśli pakiety zasobów zostały utworzone za pomocą interfejsu API (lub interfejsu wtyczki), wybierz Pakiety zasobów skonfigurowane za pomocą interfejsu API.

Dalsze kroki

Przetestuj dostarczanie zasobów lokalnie i z Google Play.