Table of Contents

アセット バンドル

Warning

このセクションの内容はもう古いので、参考程度に使ってください。

アセットのバンドルとは、特定のタイミングでゲームにダウンロードすることができる単一のアーカイブにアセットをパッケージ化したものです。

これにより、ダウンロードコンテンツ(DLC) を作ることができます。

基本ルール:

  • プロジェクトは複数のバンドルを生成することができます。
  • 複数のアセットセレクターからバンドルを作成できます(現在は PathSelectorTagSelector だけがサポートされています)。
  • バンドルは、他のバンドルに依存することができます。
  • すべてのバンドルは default バンドルを暗黙的に参照します。このバンドルには、個別のバンドルに入れるべきではないアセットがすべてパッケージ化されています。
  • バンドルがゲーム内にデプロイされると、そのバンドルのすべてのアセットとすべての依存関係がアクセス可能になります。
  • バンドルの解決はバンドルのダウンロードを行う非同期コールバックを介して行われます。コールバックは、依存関係ごとに一度だけ呼び出されます(AssemblyResolveイベントに似ています)。

バンドルを作成する

Note

現在のところ、作成にはいくつかの手作業が必要です(言い換えれば、sdpkg を手で編集する必要があります)。

ゲーム実行ファイルの sdprj ファイルを開き、以下の設定を追加します。

例:

  • MyBundleName という名前のバンドルは、MyTag1MyTag2 というタグを持つアセットを持っています。
  • MyBundleName2 という名前のバンドルは、MyTag3MyTag4 というタグを持つアセットを持っています。このバンドルは、MyBundleName に依存しています。
Bundles:
 - Name: MyBundleName
   Selectors:
    - !TagSelector
      Tags: 
        - MyTag1
        - MyTag2
 - Name: MyBundleName2
   Dependencies:
    - MyBundleName
   Selectors:
    - !TagSelector
      Tags: 
        - MyTag3
        - MyTag4
    - !PathSelector
      Paths:
        - folder1/
        - /folder2/
        - *.bin
        - folder3/*.xml
Note

アセットの依存関係は、最も適切なバンドルの中に自動的に配置されます。

現在のプロセスは以下のように機能します。

  • 特定のタグセレクタ(バンドルアセットの "roots")に一致するアセットを検索します。
  • それらの "roots" バンドルアセットに依存しているアセットを列挙して、"roots" アセットと同じバンドルに入れます。
    • パッケージの依存関係のいずれかから既にアクセス可能である場合を除きます(例:共有依存パッケージやデフォルトパッケージ)。
  • 他のすべてのものを default バンドルに配置します。

注意:

  • 共有アセットは、特に共通パッケージやデフォルトパッケージに配置されていない場合に複製されることがありますが、それは意図された動作です(例えば、共通アセットを使用するユーザーが、自己完結する必要がある2つの別個の DLC を配布したい場合など)。
  • すべてのバンドルは、暗黙のうちに default バンドルに依存しています。

実行時にバンドルを読み込む

バンドルの読み込みは、ObjectDatabase.LoadBundle(string bundleName) (ref:{Stride.Core.Storage.ObjectDatabase.LoadBundle}) で行います。

// バンドルを読み込む
Assets.DatabaseFileProvider.ObjectDatabase.LoadBundle("MyBundleName2");
 
// 特定のアセットを読み込む
var texture = Assets.Load<Texture2D>("AssetContainedInMyBundleName2");

セレクター

セレクターは、バンドルに格納されているアセットを選択することに役立ちます。

タグセレクター

アセットにアタッチされているタグのリストをもとに、アセットを選択します。

プロパティ:

  • Tags: タグのリスト。1つ以上のタグを含むアセットが選択されます。

パスセレクター

パスをもとに、アセットを選択します。

標準的な .gitignore パターンがサポートされています(ただし、!(否定)、#(コメント)、[0-9](グループ)は除きます)。

プロパティ:

  • Paths: フィルターのリスト。1つ以上のフィルタに適合するURLを持つアセットが選択されます。