スクリプトのロード順序
ESMスクリプト
ESMスクリプトには明示的なロード順序がなく、特定の順序でロードされることに依存すべきではありません。代わりに、モジュール間の依存関係を宣言するためにモジュールインポート文を使用する必要があります。
クラシック スクリプト
一般的に、すべてのスクリプトはアプリケーションの起動時にロードされます。ロード順序は、メインエディターメニューまたはシーン設定からアクセスできるプロジェクトの設定によって決定されます。
ロード順序パネルには、preload
とマークされたすべてのクラシック スクリプトと、それらがロードおよび実行される順序が表示されます。
個々のスクリプトをドラッグアンドドロップで移動して、順序を編集できます。
スクリプトが最初にロードされると、即座に実行されます。つまり、スクリプトはロードされた順序で最初に実行されます。ただし、スクリプトのロード順序は、スクリプトコンポーネント内のスクリプトメソッドの実行順序には影響しません。たとえば、同じEntity上のスクリプトのinitialize
メソッドは、ロード順序ではなく、Entityにリストされている順序で呼び出されます。
プリロード
デフォルトでは、PlayCanvasの他のアセットと同様に、スクリプトアセットはpreload
とマークされます。これは、アプリケーションが起動する前にロードされることを意味します。スクリプトのプリロードを無効にした場合、通常の状況ではロードされません。これにより、スクリプトをプロジェクトに含めつつも、preload
のチェックを外すことでロードを防ぐことができます。非プリロードスクリプトを動的にロードするには、通常のアセットAPIを使用できます(AssetRegistry#load
を参照)。
スクリプトレジストリへの動的な変更を購読することが可能です:
this.app.scripts.on('add', (name, scriptType) => {
console.log('script', name, 'has been loaded');
});
連結
デフォルトでは、アプリケーションを公開またはエクスポートすると、すべてのプリロードされたクラシック スクリプトが1つのスクリプトファイルに連結されます。これにより、すべてのスクリプトをロードするために必要なリクエスト数を減らすことで、ロード時間を最適化します。