テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

AssetBundleとシェーダー、ロードが遅い場合の対策

またまた素晴らしい資料が公開されてた。

アセットバンドルとシェーダー

内容はAssetBundleを使用した際に非常に大きなローディングがかかる場合の原因と対策。大雑把に言えばこんな感じ。

  1. シェーダーのビルドはランタイム。しかも重い。
    (シェーダーのビルドはOpenGLの仕様によるものだった気がする)
  2. AssetBundleが異なる場合は同一シェーダーを使ってても別扱い
  3. 1と2の理由により、AssetBundleからシェーダーごと取得すると時間がかかる
対策としては、PushAssetDependencies/PopAssetDependenciesで共通シェーダーを用意しておいてシェーダーのコンパイルを1回で済まそうって感じらしい。

特にシーンを丸ごとプレハブ化してAssetBundleに突っ込み、1シーンでランタイムにAssetBundleを読み込んでシーン管理している人は注意かもしれない。