Skip to content

アセットロード失敗を検知する

アセットロードの失敗を検知するには、 g.Scene#onAssetLoadFailure トリガーを利用します。

凡例

javascript
scene.onAssetLoadFailure.add(function(failureInfo) {
  // scene 内で利用するアセットがロードに失敗する度に実行されるコード。

  // 引数 `failureInfo` からは、ロードできなかったアセットを取得可能。
  // ただしロード完了後でないと利用できない値 (`TextAsset` の `data` など) は不定。
  const failedAsset = failureInfo.asset;

  if (!failureInfo.error.retriable) {
    // 再試行回数が一定回数を超えた場合、このコードが実行される。
    // この後、エンジンはロードを再試行しない。
  }
});
scene.onAssetLoadFailure.add(function(failureInfo) {
  // scene 内で利用するアセットがロードに失敗する度に実行されるコード。

  // 引数 `failureInfo` からは、ロードできなかったアセットを取得可能。
  // ただしロード完了後でないと利用できない値 (`TextAsset` の `data` など) は不定。
  const failedAsset = failureInfo.asset;

  if (!failureInfo.error.retriable) {
    // 再試行回数が一定回数を超えた場合、このコードが実行される。
    // この後、エンジンはロードを再試行しない。
  }
});

詳細

アセットがサーバ上に存在しない場合や、ネットワーク異常でダウンロードできないなどの場合、g.Scene#onAssetLoadFailure トリガーでアセットロードエラーが通知されます。 Akashic Engine はこの通知後、自動的に読み込みを再試行します。

また、Scene の生成時に指定したアセットが読み込めない場合は、 Scene#onLoad トリガーは通知されません。ゲームは (エラー通知の処理に関係なく) 続行できなくなります。

そのため通常、ゲーム開発者がアセットロードエラーを処理する必要はありません。

このトリガーが有用なのは、特に g.Scene#requestAssets() でシーン内から動的にアセットを読み込む場合です。 コンテンツとアセットによっては「ロードできなくても続行できる」場合があるためです。 ここでロード失敗時にフラグを立てるなどの用途で、 onAssetLoadFailure を利用することができます。

関連情報