Version: Unity 6.0 (6000.0)
言語 : 日本語
オンデマンドリソース
Apple のプライバシーマニフェストポリシー要件

App Slicing

App Slicing では、アプリを実行しているデバイスの仕様に従って、アセットを動的にダウンロードできます。例えば、大きなデバイス用に高解像度アセット、小さなデバイス用に低解像度アセットをダウンロードできます。App Slicing を使用するには、バリアントの追加プロビジョニングを含めて、アセットバンドルを定義します。どのバリアントを起動時に使用して、ダウンロード時にそれをアセットファイル名に自動でアペンドするのかを決めることができます。

バリアントを作成する

バリアントを作成するには、以下の手順に従います。

  1. AssetBundle フォルダー をクリックし、Inspector ウィンドウ下部の Asset Labels セクションに移動します。
  2. 右のドロップダウンメニューをクリックし、New を選択し、新しいバリアントの名前を入力します。アセットバンドルのバリアント名は小文字にする必要があります。
  3. Unity エディターフォルダーに BuildiOSAppSlices.cs という新しいスクリプトを作成します。
  4. 以下のコードをコピーして貼り付け、サンプルラベル textures、バリアント hd、バリアント sd を独自のものに置き換えます。このコード例では、複数のフォルダーが参照されています。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 という新しいメニューが作成されます。これをクリックし、Build iOS App Slices を選択します。これで ODR フォルダー内にアセットバンドルが生成されます。

アセットをロードする

アセットをロードするには、Assets フォルダーに 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 );

        }
    }
}

バリアントを変更する

特定のデバイスや、設定されたメモリ制限を超えるデバイスで、バリアントを使用したい場合があります。それには、使用する各バリアントの設定を変更できます。

バリアントを変更するには、Player Settings > Other Settings > Configuration に移動して、Variant map for app slicing を展開します。

ノート: Player Settings > Other > ConfigurationUse on demand resources を有効にすると、Variant map for app slicing のオプションが表示されます。

設定 説明
Variant name 起動スクリプトのバリアントの名前を表示します。
Device このバリアントの対象デバイスを選択します。
Memory このバリアントに必要な最小メモリを選択します。
グラフィックス このバリアントで使用する Metal framework を選択します。
Display color space このバリアントに使用する色域を選択します。
Add custom entry Add custom entry をクリックして、独自のカスタム設定と値を追加します。
キー 設定名を入力します。
この設定の値を入力します。

追加リソース

オンデマンドリソース
Apple のプライバシーマニフェストポリシー要件