Version: 6000.3
语言: 中文
按需资源
Apple 的隐私舱单政策要求

应用切片

应用切片允许您根据运行应用程序的设备的规格动态下载资产。例如,应用切片可以为较大的设备下载高分辨率的资产,为较小的设备下载低分辨率的资产。应用切片通过定义 AssetBundle 来工作,并增加了变体的配置。您可以决定在启动时使用哪个变体,并在下载时自动将其附加到资产文件名中。

创建变体

要创建变型,请使用以下步骤:

  1. 点击你的 AssetBundle 文件夹,然后导航到 资产标签(Asset Labels) 底部的 资产标签(Asset Labels) 分段检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗。
  2. 点击右侧下拉菜单,选择新建,然后输入新变体的名称。AssetBundle 变体必须为小写。
  3. 在 Unity 编辑器文件夹中创建一个名为BuildiOSAppSlices.cs.
  4. 复制并粘贴以下代码,替换示例标签textures和变体hdsd与您自己的。在此代码示例中,引用了多个文件夹:一个包含 HD 纹理,另一个包含 SD 纹理。这些文件夹被赋予了 hdsd 的变体。
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 编辑器菜单栏中创建一个名为 Bundle 的新菜单。点击此按钮,然后选择 构建iOS应用切片(Build iOS App Slices) 。这会在ODR文件夹。

加载资产

要加载资产,请创建一个名为LoadBundle.cs并复制到以下代码中。取代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 框架
显示色彩空间 选择要用于此变体的色域。
添加自定义条目 单击添加自定义条目以添加您自己的自定义设置和值。
此属性具有以下选项:
  • :输入设置的名称。
  • 值:输入此设置的值。

其他资源

按需资源
Apple 的隐私舱单政策要求