プレロード及びストリーミング
ウェブ上では、ページをロードした後にできる限り早くアプリケーションを起動することが重要です。ローディングバーを表示して、ユーザを待たせてしまうとアプリケーションが始まる前にユーザが離れてしまう可能性があります。PlayCanvasアセットシステムに実装されている機能を使用すれば、ロードプロセスを合理化し速くアプリケーションを起動することができます。
プレロード
プロジェクト内のすべてのアセットにはpreload
というプロパティがあります。デフォルトでは、これはtrueに設定されています。アセットがプリロードとしてマークされている場合は、アプリケーションの初期化フェーズが始まる前にダウンロードおよび作成されます。
プリロードを使用してアプリケーションの開始時に必要とする全てのアセットがあることを確認します。これは、アプリケーションが開始した後にアセットが入ってくることを防ぎます。
ストリーミング
シーンのエンティティがアセットを参照している場合、エンティティが有効になるとロード要求が開始されます。シーンでエンティティが有効になっている場合、この要求はアプリケーションが起動すると同時に作られます。
すべてのコンポーネントは動的なアセットのロードを処理して、アセットがロードされると、通常通り動作を開始します。このように動的にアセットをストリーミングする場合、多くの場合、「ポップアップ」が表示されます。素材やテクスチャが無くても、ロードされるとすぐにモデルが表示されます。
アセットが読み込まれるタイミング
特定のアセットがいつ読み込まれるかを確認するには、これらのルールに従ってください。
preload = true
の場合、アセットはアプリケーションが起動する前に読み込まれます。 若しくは: *シーン階層で有効になっているエンティティで有効になっているコンポーネントによってアセットが参照されていれば、アセットは読み込まれます。アセットは、エンティティまたはコンポーネントが有効になる際、またはアセットがコンポーネントに割り当てられる際に読み込まれます。エンティティがエディタで有効になっている場合、プレロードが完了し、アプリケーションが起動した直後に読み込まれます。コンポーネントは、コンポーネント自体が有効になっていて、その上の階層内のすべてのエンティティが有効になっている場合、有効と定義されます。 *読み込まれている別のアセットによりアセットが参照されている場合、読み込まれます。例えば、モデルが読み込まれて素材を参照している場合、素材も読み込まれます。素材がテクスチャを参照している場合はテクスチャも読み込まれます。
アセットタグ
ロードされると同時にアセットを「ポップアップ」させたくない場合があります。アセットのセットをロードして、それらを表示させることが好ましいです。これを行うには、アセットタグを利用してアセットのグループを作成します。それらを使用する前に、特定のタグを持つすべてのアセットを読み込むことができます。
タグを利用してアセットのセットを読み込む方法を説明するjavascriptの例です。
var assets = this.app.assets.findByTag("level-1");
var count = 0;
for (var i = 0; i < assets.length; i++) {
assets[i].once("load", function () {
count++;
if (count === assets.length) {
// asset loading complete
}
});
this.app.assets.load(assets[i]);
}