Слитинг приложений
Слитинг приложений позволяет динамически загружать Assets в соответствии с спецификацией устройства, на котором запущено приложение. Например, слитинг приложений может загружать Assets высокого разрешения для более крупных устройств и Assets низкого разрешения для меньших устройств. Слитинг приложений работает путем определения AssetBundles с дополнительным предоставлением вариантов. Вы можете решить, какой вариант использовать при запуске, и автоматически добавить его к имени файла Asset при загрузке.
Создать вариант
Чтобы создать вариант, выполните следующие действия:
- Щелкните папку AssetBundle и перейдите в раздел «Метки ассетов» в нижней части окна Inspector.
- Нажмите на раскрывающееся меню справа, выберите Новыеи введите название вашего нового варианта. Варианты AssetBundle должны быть написаны строчными буквами.
- Создайте новый скрипт в папке Unity Editor под названием
BuildiOSAppSlices.cs. - Скопируйте и вставьте следующий код, заменив примерную метку
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 для использования с этим вариантом. |
| Цветовое пространство дисплея | Выберите цветовую гамму для использования с этим вариантом. |
| Добавить пользовательский элемент | Нажмите Добавить пользовательскую запись добавить свои собственные настройки и значения. Это свойство имеет следующие опции:
|