強火で進め

このブログではプログラム関連の記事を中心に書いてます。

『Unity for Creative 第3回!!「Unity × WebGL 開発最前線!!〜実践ノウハウ&メリット〜」』に行って来ました

Unity for Creative 第3回!!「Unity × WebGL 開発最前線!!〜実践ノウハウ&メリット〜」 ※好評につきちょっとだけ増席しました。 : ATND
https://atnd.org/events/84444

検証環境
  • Unity 5.4.3
  • Chrome 56.0.2924.87(64bit)
問題点
  • データ保持
  • バトル処理の負荷
  • 動画再生
データ

・画像
・音声
・動画
・イベントページ
以上のものをAssetBundle化し、サーバへ

  • WWW.LoadFromCacheOrDownloadを使用してダウンロード
  • WebGL の場合には IndexedDB に保存される
IndexedDB保存場所

Mac

~/Library/Application Support/Google/Chrome/Default/IndexedDB

Windows

C:\Users\ユーザー名\AppData\Local\Google\Chrome\User Data\Default\IndexedDB
  • ロード時や戦闘時に画面が止まる→メモリの圧迫が原因
  • 解決方法「DL方法をWWWに変更」
  • キャッシュはブラウザのキャッシュに任せる
  • 注意点:ブラウザのキャッシュによりダウンロードされない事が有る→URLの末尾にハッシュ値などを付ける
Indexed DBを使った時の起動速度
AssetBundle 起動速度
0 約11秒
100MB x 10 約19秒
100MB x 100 約23秒
1MB x 1000 約26秒
動画再生
  • EasyMovieTextureを使用していた→WebGLは未対応
  • 「Simple MovieTextures for Unity WebGL」を使用

※ Unity 公式のアセット

Simple MovieTextures for Unity WebGL - アセットストア
https://www.assetstore.unity3d.com/jp/#!/content/38369

不都合な点
  • 「Simple MovieTextures for Unity WebGL」は URL 直叩きで指定されていた
修正
  • AssetBundleでダウンロードしてきた動画ファイルのbyte配列 → 内部でBlobデータを作成
  • vide.src = URL.createObjectURL(blob.data);
ロジック最適化
  • 劇的に変わるものは無かった。地道時に改善
  • メニューは問題無かったが戦闘時にカクついた
  • 開発当初の Unity では Profiler の接続に失敗した

※筆者注:アプリ起動時の Profiler の自動接続に失敗したという話の様でした。後からアタッチする場合だと大丈夫だった?