CCD と Addressables のウォークスルー
Follow this workflow to integrate the Addressable Asset system with Cloud Content Delivery for seamless content delivery.
読み終わるまでの所要時間 8 分最終更新 2ヶ月前
このセクションでは、実際の Unity ゲームプロジェクトに Cloud Content Delivery (CCD) と Addressables を設定して、Unity エディターから CCD にアセットのパイプラインを簡単に統合できるようにする方法を示します。
Loady Dungeons という非常にシンプルなモバイルゲームを使用して、以下を行う方法を学びます。
- Addressable Assets パッケージを使用してアセットを設定および管理する
- アセットバンドルを生成する
- Unity Dashboard でプロジェクトを設定する
- コマンドラインインターフェースを設定する
- CCD ダッシュボードでバケットとバッジを作成する
- アセットバンドルをアップロードする
プロジェクトをダウンロードする
このウォークスルーを進めるために最初に行う必要があるのは、GitHub からサンプルゲーム Loady Dungeons の最新バージョンをダウンロードすることです。プロジェクトをテストする
- Unity エディターを開きます。
- Loady Dungeons プロジェクトを開きます。
- MainMenu シーンを開きます。
- Game (ゲーム) タブをクリックします。
-
Aspect (アスペクト) ドロップダウンで、+ をクリックします。
- Type (タイプ) が "Aspect Ratio" (アスペクト比)、Width (幅) と Height (高さ) がそれぞれ 9 と 16 の新しいアスペクトを作成します。これにより、ゲームのプレビューが携帯電話で実行したときの外観に近くなります。
- OK をクリックします。
- Low Resolution Aspect Ratios (低解像度のアスペクト比) をオフにします。
- エディターの 再生 ボタンを押して、ゲームを試します。
Addressable Assets パッケージをインストールする
アセットを Addressable としてマークするには、Unity エディターで直接 Addressables パッケージをインストールする必要があります。- Window (ウィンドウ) > Package Manager (パッケージマネージャー) を選択します。
- 使用している Unity エディターで検証済みの最新バージョンの Addressables を探します。この例では、バージョン 1.16.19 を使用します。
- 必要なバージョンを選択し、Install (インストール) を選択します。
ゲームアセットを Addressable として設定する
Addressable アセット は、アドレスでアセットをロードすることにより、アセット管理の負担を軽減する簡単な方法を提供します。Addressables パッケージをインストールしたので、次はゲームアセットを Addressable としてマークします。- Project (プロジェクト) ウィンドウで Scenes (シーン) フォルダーを開きます。
-
以下のアセットを選択します。
- Level_00
- Level_01
- Level_02
- Level_03
- Inspector ウィンドウで、それぞれに対して Addressable を選択します。
- Window (ウィンドウ) > Asset Management (アセット管理) > Addressables > Groups (グループ) から Addressables Groups (Addressables グループ) ウィンドウを開きます。
-
Create (作成) > Group (グループ) > Packed Assets (パックされたアセット) を使用して、以下のグループを新規作成します。
- Level 00
- Level 01
- Level 02
- Level 03
- Hats
- Scenes (シーン) のアセットを、デフォルトグループからそれぞれの対応するグループにドラッグします。例えば、Level_01 シーンを、デフォルトグループから新規作成した Level 01 グループにドラッグします。
- Hats フォルダーの (フォルダー自体ではなく) コンテンツ全体を、Project (プロジェクト) ウィンドウの Hats フォルダー (Prefabs (プレハブ) > Hats) から Hats グループにドラッグします。
-
Addressables Groups (Addressables ウィンドウ) から各アセットを選択し、その長い Addressable フィールドの名前を Inspector ウィンドウ内でより単純な名前に変更します。すべてのアセットを選択し、右クリック > Simplify Addressable Names (Addressable の名前を単純化) を選択すると、それらの名前が自動的に変更されます。
シーンアセット Level_00 であれば、Addressable フィールドにあるその名前を Assets/Scenes/Level_00.unity から Level_00 に変更します。
- シーンアセット Level_00 の Addressable フィールドの名前を Level_00 に変更
- シーンアセット Level_01 の Addressable フィールドの名前を Level_01 に変更
- シーンアセット Level_02 の Addressable フィールドの名前を Level_02 に変更
- シーンアセット Level_03 の Addressable フィールドの名前を Level_03 に変更
- プレハブアセット Hat00 の Addressable フィールドの名前を Hat00 に変更
- プレハブアセット Hat01 の Addressable フィールドの名前を Hat01 に変更
- プレハブアセット Hat02 の Addressable フィールドの名前を Hat02 に変更
- プレハブアセット Hat03 の Addressable フィールドの名前を Hat03 に変更
プロファイルを設定してアセットバンドルをビルドする
-
この段階では、新しいアドレス指定可能プロファイルを作成し、ゲームの開発に関するすべての関連設定をこの開発プロファイルに保存します。
- Window (ウィンドウ) > Asset Management (アセット管理) > Addressables > Groups (グループ) をクリックします。
- ドロップダウンから Profile (プロファイル) > Manage Profiles (プロファイルの管理) を選択します。
- 表示される Addressables Profiles (アドレス指定可能プロファイル) ウィンドウで、Create (作成) > Profile (プロファイル) を選択します。
- New Profile (新しいプロファイル) という名前のプロファイルが表示されます。それを 右クリック して、Rename Profile (プロファイルの名前を変更) を選択します。“Development Profile” という名前を付けます。
- Development Profile を右クリックし、Set Active (アクティブに設定) を選択します。これにより、Development Profile が現在使用中のプロファイルとして設定されます。
-
次に、ゲームのコード以外のアセットを含むアーカイブファイル、アセットバンドル をビルドします。これを行うのは、エディターの再生モードで、ローカルアセットの代わりにアセットバンドルを使用するためです。
- Window (ウィンドウ) > Asset Management (アセット管理) > Addressables > Groups (グループ) をクリックします。
- Build (ビルド) > New Build (新しいビルド) > Default Build Script (デフォルトビルドスクリプト) をドロップダウンから選択します。
- Play Mode Script (再生モードスクリプト) > Use Existing Build (既存のビルドを使用) をドロップダウンから選択します。
CCD の使用を開始する
これで、このゲームを Cloud Content Delivery (CCD) サービスにフックし、最終的に Addressables とアセットバンドルを利用するための準備ができました。CCD の利点は、アプリケーションの新しいバージョンを再インストールする必要なく、コンテンツをホストし世界中のアプリケーションユーザーに配信するマネージドクラウドサービスであるという点です。 CCD の使用を開始するには、以下を行います。- Unity Dashboard に移動します。
- Unity ID を使用してサインインします。
-
Projects (プロジェクト) ドロップダウンから、Create Project (プロジェクトを作成) をクリックします。
- “Loady Dungeons Workshop” という名前を付けます。
- Create project (プロジェクトを作成) をクリックします。
- Loady Dungeons Workshop の Project Settings (プロジェクト設定、歯車のアイコン) をクリックします。プロジェクト ID をメモします。
- 左側で、Environments (環境) を選択します。
- まだ開発環境がない場合は作成します。
- Unity Dashboard のランディングページで、Cloud Content Delivery を見つけて選択します。
コマンドラインインターフェース (任意)
任意のコマンドラインインターフェース (CLI) を使用してプロジェクトを管理する場合は、以下を行います。- 使用している OS 用の CLI をダウンロード します。
- 必ず、CLI のフォルダーをコンピューターの環境変数に加えてください。
- コマンドラインを開き、プロジェクトのフォルダーに移動します。
- 以下のコマンドを入力して、CLI が正常に設定されていることを確認します:
ucd help
バケット
ここでは、このプロジェクトのさまざまな制作段階で役立つバケットを作成します。バケットを作成する
- CCD のランディングページで、左側の Buckets (バケット) をクリックします。
- プロジェクトのドロップダウンから Loady Dungeons Workshop を選択します (まだ選択されていない場合)。
-
Create Bucket (バケットを作成) をクリックします。
- バケットに “Loady Dungeons Sample” という名前を付けます。
- バケットの説明 (任意) を入力します。
-
バケットを以下のどちらにするかを選択します。
- Open to all (全員に公開): 誰でもこのバケット内のコンテンツを変更することができます。
- Promotion only (昇格専用): オーナーとマネージャーが、昇格 によってコンテンツを変更できます。誰も、このバケットにコンテンツをアップロードしたり、このバケットからコンテンツを削除したりはできません。
-
このバケットに対する読み取りアクセスを制限するには、Enable Bucket Privacy (バケットのプライバシーを有効化) を選択します。Private バケットでは、アクセストークンを持つユーザーのみがコンテンツを読み取ることができます。
- Next (次へ) を選択します。
- 本番環境と開発環境の両方にチェックが付いていることを確認してください。
- Create (作成) を選択します。
アセットバンドルを生成し、コンテンツを手動でアップロードする
アセットバンドルを生成する
アセットバンドル は、Unity が実行時にロードできる、プラットフォーム固有のコード以外のアセットを含むアーカイブファイルです。 アセットバンドルを生成するには、以下を行います。- Unity エディターのプロジェクトで、Window (ウィンドウ) > Asset Management (アセット管理) > Addressables > Groups (グループ) をクリックします。
- Profile (プロファイル) ドロップダウンで、Development Profile が選択されていることを確認します。選択されていない場合は、ここで選択します。
- Profile (プロファイル) ドロップダウンで、Manage Profiles (プロファイルの管理) を選択します。
-
Development Profile が選択された状態で、以下のように設定します。
-
RemoteBuildPath: 。ここで、
AssetBundles/[BuildTarget]はデフォルトのサブフォルダーです。[BuildTarget] -
RemoteLoadPath:
https://PROJECT_ID.client-api.unity3dusercontent.com/client_api/v1/buckets/BUCKET_ID/release_by_badge/latest/entry_by_path/content/?path=- をプロジェクトの ID に置き換えます。プロジェクト ID を前にメモしていなかった場合は、ダッシュボードの隅にあるユーザー名をクリックし、Account (アカウント) > Project Management (プロジェクト管理) > Loady Dungeons Workshop で調べます。
PROJECT_ID - パス内の を、使用するバケット (この例では、開発環境に作成した Loady Dungeons Sample バケット) の ID に置き換えます。その
BUCKET_IDを前にメモしていなかった場合は、CCD ダッシュボード内のバケットのリストで調べます。BUCKET_ID - パス内の は、最新のリリースに割り当てられている自動生成されたバッジ Latest を指します。
latest
-
RemoteBuildPath:
- Addressables Groups (Addressables グループ) ウィンドウに戻ります。
- Hats を選択します。
-
Inspector パネルで、以下のように設定します。
- Build Path: RemoteBuildPath
- Load Path: RemoteLoadPath
- Level 00、Level 01、Level 02、Level 03 に対して繰り返します。
- 引き続き Addressables Groups (Addressables グループ) ウィンドウで、Build (ビルド) ドロップダウンをクリックし、New Build (新しいビルド) > Default Build Script (デフォルトビルドスクリプト) を選択します。これにより、アセットバンドルが RemoteBuildPath の場所に保存されます。
- 先ほど作成したビルドをプレイテストのベースとして使用するには、Play Mode Script (再生モードスクリプト) > Use Existing Build (既存のビルドを使用) をクリックします。
-
Unity エディターの 再生 ボタンをクリックしてゲームをテストします。
- ゲーム内の Start (開始) を押します。ゲームがどのようにスタックしているかに注目してください。
コンテンツをアップロードする
ここでは、このコンテンツを、先ほど CCD に設定した開発バケットにアップロードします。- ダッシュボードで、開発環境の Loady Dungeons Sample バケットを選択します。
- バケットが空の場合は Upload using the dashboard (ダッシュボードを使用してアップロード)、バケットにすでにエントリーが含まれている場合は Upload Content (コンテンツをアップロード) を選択します。
- ドラッグアンドドロップするか、Browse (参照) ボタンを選択して、アセットバンドルをビルドしたフォルダーから CCD の開発バケットにコンテンツをアップロードします。ファイルは、先ほど RemoteBuildPath として指定したフォルダーにあります。
- Upload 5 Files (5 個のファイルをアップロード) (4 つのレベルと Hats) を選択します。
- アップロードプロセスが終わったら、Refresh Page (ページを更新) を選択して、バケットの情報のステータスを更新します。エントリーは Unreleased Changes (未リリースの変更) として表示されます。これは、エントリーがバケット内に存在するが、まだ リリース にラップされていないことを意味します。
- リリースを作成するには、Create Release (リリースを作成) を選択します。これにより、開発環境の Loady Dungeons Sample バケットにアップロードしたアセットバンドルが取得され、リリースにバインドされます。画面上のプロンプトに従って、プロセスを完了します。
latestアセットバンドルを生成し、CCD Management パッケージを使用してコンテンツをアップロードする
CCD Management パッケージと Addressables 1.19.15 以降を併用すると、Addressable コンテンツのビルド、アップロード、リリースが簡単になります。アセットバンドルを生成する
- Unity エディターのプロジェクトで、Window (ウィンドウ) > Asset Management (アセット管理) > Addressables > Groups (グループ) をクリックします。
- Profile (プロファイル) ドロップダウンで、Development Profile が選択されていることを確認します。
- Profile (プロファイル) ドロップダウンで、Manage Profiles (プロファイルの管理) を選択します。
-
Profile (プロファイル) ウィンドウで、Development Profile を選択し、Remote (リモート) ドロップダウンを Cloud Content Delivery を使用するように変更します。
- 次に表示されるオプションのリストで、先ほど作成した Loady Dungeons Sample バケットを選択します。
- その後に表示されるリストで、Latest (最新) バッジを選択します。
- Addressables Groups (Addressables グループ) ウィンドウに戻ります。
- Hats を選択します。
-
Inspector パネルの Content Packaging & Loading (コンテンツのパッケージ化とロード) で、以下を行います。
- Build and Load Paths (ビルドパスとロードパス) を Remote (リモート) に設定します。
- Level 00、Level 01、Level 02、Level 03 に対して繰り返します。
- Groups (グループ) ウィンドウで、Build (ビルド) ドロップダウンをクリックし、New Build (新しいビルド) > Default Build Script (デフォルトビルドスクリプト) を選択します。これにより、アセットバンドルが RemoteBuildPath の場所に保存されます。
- 作成したビルドをプレイテストのベースとして使用するには、Play Mode Script (再生モードスクリプト) > Use Existing Build (既存のビルドを使用) をクリックします。
- Unity エディターの 再生 ボタンを選択して、ゲームをテストします。
- ゲーム内の Start (開始) を選択します。ゲームがどのようにスタックしているかに注目してください。
コンテンツをアップロードする
このコンテンツを、先ほど CCD に設定した Loady Dungeons Sample バケットに生成、アップロード、リリースするには、以下を行います。- Unity エディターのプロジェクトで、Window (ウィンドウ) > Asset Management (アセット管理) > Addressables > Groups (グループ) をクリックします。
- Build & Release (ビルドとリリース) を選択します。
latestリリースを昇格させる
アセットを開発環境の Loady Dungeons Sample バケットにアップロードし、それらのアセットをリリースに結び付けたら、これらの最新の変更を一般公開できます。本番環境にもバケットを作成したのはそのためです。本番環境のバケットには、プレイヤーに公開する準備ができたリリースを入れます。これは、昇格 と呼ばれるプロセスによって、開発環境のバケットから本番環境のバケットにリリースを移動することを意味します。 リリースを開発環境のバケットから本番環境のバケットに昇格させるには、以下を行います。- まだ行っていない場合は、Unity Dashboard で Loady Dungeons Workshop CCD プロジェクトに移動し、Environments (環境) ドロップダウンで開発環境が選択されていることを確認し、Loady Dungeons Sample バケットを選択します。
- Promote Release (リリースを昇格) を選択します。
- Target Environment (ターゲット環境) ドロップダウンで、production (本番) を選択します。
- Target Bucket (ターゲットバケット) ドロップダウンで、Loady Dungeons Sample を選択します。
- リリースノート (任意) を追加します。
- Next (次へ) を選択し、画面上のプロンプトに従います。
- Promote Release (リリースを昇格) を選択します。
latest- 環境ごとに別々のプレイヤービルドを用意します。開発ビルドではデバッグシンボルを利用し、変数を開発環境のバケットに設定します。本番ビルドではデバッグシンボルを無効にし、
bucket_id変数を本番環境のバケットに設定しますが、どちらのビルドでも同じコンテンツを使用します。bucket_id - プロファイル変数の静的プロパティまたは TransformInternalId を使用して、実行時にカタログがリーチするバケットを動的に変更します。Addressables における静的プロファイル変数と内部 ID の変換の詳細については、リソース URL の変換 に関するドキュメントを参照してください。
- Unity エディターで、エディターの 再生 ボタンを押します。
- ゲーム内で Start (開始) を押します。
- ゲーム内で Play (再生) を押します。Unity エディター内でゲームをプレイできるようになりました。
Private バケットで Addressables を使用する
Private バケットからデータを読み取るには、有効なバケットアクセストークンが必要です。 Addressables 1.19.4 以降では、WebRequestOverride 機能を使用して、以下の例に示すようにバケットアクセストークンをリクエストにヘッダーとして追加できます。この例で、void Start(){ textComponent = GetComponent<Text>(); Addressables.WebRequestOverride = webRequest => { webRequest.SetRequestHeader("Authorization", "Basic "+token); // Debug.Log($"Fetching: {webRequest.url}"); }; Addressables.LoadAssetAsync<TextAsset>("Assets/one.txt").Completed += handle => { textComponent.text = handle.Result.text; // Debug.Log($"Text is now: {handle.Result.text}"); };}
token