アセットレジストリ
複数のWebサイト向けにデプロイ予定のプロジェクトにおいて、管理の問題からプロジェクトは1つのみでそれぞれのWebサイト向けにロードすべきアセットを切り分ける場合、全てのアセットをロードするのではなくAssetRegistryを利用してアセット毎にロードを制御することが可能です。
http://developer.playcanvas.com/ja/tutorials/using-assets/
また、アセットタグを利用することで、読み込むべきアセットを分類し効率的にロードの管理を行うことが可能です。
http://developer.playcanvas.com/ja/user-manual/assets/preloading-and-streaming/#asset-tags
基本的な実装:
- 1つのバージョン用にロードするすべてのアセットにタグを適用する
- これらのアセットのプリロードを無効にする
- pc.AssetRegistry.findByTag()を利用して、該当のアセットを読み込む
アセットが読み込まれるタイミングに関しまして
Asset > preload のチェックボックスがtrueの場合、PlayCanvasアプリケーションのローディング時(preload時)にアセットのロードが行われます。そのため、アプリケーションの読み込み時間に影響します。
Asset > preload が falseの場合
アクティブなentityがレンダリングをしようとするタイミングでそのentityを構成するassetがロードされていなかった場合、assetのロードが始まります。
entityが非アクティブな場合、レンダリングの必要がないため、assetの読み込みは開始されません。
pc.AssetRegistry.load()メソッドを利用して個々のassetのロードを管理することも可能です。ロード終了時のコールバックや特定のアセットに対してのみロードする方法もドキュメントに詳細に記載しております。
http://developer.playcanvas.com/ja/tutorials/using-assets/
entityに対してpreloadを設定することはできません。entityがinitialize時にenabled = falseだった場合、レンダリングの必要がないためpreload = falseのアセットは読み込みが開始されません。
entityのenabled = trueになった際(レンダリングしようとした瞬間)からentityを構成するassetのロードが開始されますので完全にレンダリングされるまで各アセットのロードタイムによる待ちが発生します。それらを回避するために、pc.AssetRegistry.load()メソッドを利用してアセットの任意のロードを実装していただくことが良いかと存じます。
アセットの効率的な読み込みができているかどうかはプロファイラーよりご確認が可能です。
http://developer.playcanvas.com/ja/user-manual/optimization/profiler/
緑色のバー はアセットです。 これで、アセットのロードを確認できます。
コメント
0件のコメント
サインインしてコメントを残してください。