Unity 6.3
0 онлайн 94 гостей 3 в системе
Вход
Разработка платформы Шаг 226 из 387

Слитинг приложений

Слитинг приложений позволяет динамически загружать Assets в соответствии с спецификацией устройства, на котором запущено приложение. Например, слитинг приложений может загружать Assets высокого разрешения для более крупных устройств и Assets низкого разрешения для меньших устройств. Слитинг приложений работает путем определения AssetBundles с дополнительным предоставлением вариантов. Вы можете решить, какой вариант использовать при запуске, и автоматически добавить его к имени файла Asset при загрузке.

Создать вариант

Чтобы создать вариант, выполните следующие действия:

  1. Щелкните папку AssetBundle и перейдите в раздел «Метки ассетов» в нижней части окна Inspector.
  2. Нажмите на раскрывающееся меню справа, выберите Новыеи введите название вашего нового варианта. Варианты AssetBundle должны быть написаны строчными буквами.
  3. Создайте новый скрипт в папке Unity Editor под названием BuildiOSAppSlices.cs.
  4. Скопируйте и вставьте следующий код, заменив примерную метку textures и варианты hd и sd своими собственными. В этом примере кода указаны несколько папок: одна содержит текстуры HD, а другая содержит текстуры SD. Этим папкам были присвоены варианты hd и sd.
using UnityEngine;
using UnityEditor;


public class BuildiOSAppSlices : MonoBehaviour
{
    [InitializeOnLoadMethod]
    static void SetupResourcesBuild( )
    {
        UnityEditor.iOS.BuildPipeline.collectResources += CollectResources;
    }

    static UnityEditor.iOS.Resource[] CollectResources( )
    {
        return new UnityEditor.iOS.Resource[]
        {
            new UnityEditor.iOS.Resource("textures").BindVariant( "Assets/ODR/textures.hd", "hd" )
                                     .BindVariant( "Assets/ODR/textures.sd", "sd" )
                     .AddOnDemandResourceTags( "textures" ),
    };
    }

    [MenuItem( "Bundle/Build iOS App Slices" )]
    static void BuildAssetBundles( )
    {
        var options = BuildAssetBundleOptions.None;

        bool shouldCheckODR = EditorUserBuildSettings.activeBuildTarget == BuildTarget.iOS;

#if UNITY_TVOS
            shouldCheckODR |= EditorUserBuildSettings.activeBuildTarget == BuildTarget.tvOS;
#endif

        if( shouldCheckODR )
        {
#if ENABLE_IOS_ON_DEMAND_RESOURCES
            if( PlayerSettings.iOS.useOnDemandResources )
                options |= BuildAssetBundleOptions.UncompressedAssetBundle;
#endif

#if ENABLE_IOS_APP_SLICING
            options |= BuildAssetBundleOptions.UncompressedAssetBundle;
#endif
        }

        BuildPipeline.BuildAssetBundles( "Assets/ODR", options, EditorUserBuildSettings.activeBuildTarget );
    }

}

Этот код создает новое меню в строке меню Unity Editor под названием Пакет. Нажмите на него и выберите Сборка App Slices для iOS. Это создает AssetBundles в папке ODR.

Загрузить ресурс

Чтобы загрузить ресурс, создайте файл скрипта с именем LoadBundle.cs в папке Assets и скопируйте в него следующий код. Замените textures на имя варианта, который вы хотите загрузить.

using UnityEngine;
using UnityEngine.iOS;
using System;
using System.Collections;

public class LoadBundle : MonoBehaviour
{
    public AssetBundle     TextureBundle;


    void Start( )
    {
        LoadAssetAsync( "textures", "textures" );
    }

    public IEnumerator LoadAsset( string resourceName, string odrTag )
    {
        // Create the request
        using(OnDemandResourcesRequest request = OnDemandResources.PreloadAsync( new string[] { odrTag } ))
        {
            // Wait until request is completed
            await request;

            // Check for errors
            if( request.error != null )
                throw new Exception( "ODR request failed: " + request.error );

            TextureBundle = AssetBundle.LoadFromFile( "res://" + resourceName );

        }
    }
}

Изменение варианта

В некоторых случаях может потребоваться использовать вариант на конкретном устройстве или на устройствах, работающих с превышением установленного предела памяти. Для этого можно изменить параметры каждого используемого варианта.

Чтобы изменить вариант, перейдите в Настройки проигрывателя > Другие настройки > Конфигурация и разверните Карта вариантов для разделения приложения.

Примечание: Включите Использование ресурсов по требованию в Настройки проигрывателя > Другие > Конфигурация для просмотра карты вариантов для разделения приложений на слои параметров.

Настройка Описание
Вариантное название Отображает имя варианта из скрипта загрузки.
Устройство Выберите устройство, на которое ориентирован этот вариант.
Память Выберите минимальную память, требуемую для этого варианта.
Графика Выберите Фреймворк Metal для использования с этим вариантом.
Цветовое пространство дисплея Выберите цветовую гамму для использования с этим вариантом.
Добавить пользовательский элемент Нажмите Добавить пользовательскую запись добавить свои собственные настройки и значения.
Это свойство имеет следующие опции:
  • Ключ: Введите имя настройки.
  • Значение: Введите значение для этого параметра.

Дополнительные ресурсы