この記事では、いつの間にか容量が大きくなってしまったとき、より確実な容量削減手順を述べます。
今回紹介するファイル容量削減方法は、ワールドにアップロードする直前のアセットバンドルファイルの削減方法です。つまり、この記事では、ワールドにアップロードする直前の状態でリソースの可視化、容量削減手順がわかります!
この記事の概要
ワールドにアップロードされるファイルは、開いているシーンで使われているアセット(テクスチャ、モデル、フォントなど)のみです。UnityアセットストアやBOOTHからダウンロードしてUnity内においただけでは、ワールドの容量は増えません。
アップロードするシーンにおいて、どのファイルを使っているのか探すのはとても手間です。
そこで、無料公開されているAssetStudioを使えば、ワールドに公開するアセット(「アセットバンドル」という)のみ調べることができるので、時間の節約にもなります。
前置きが長くなりましたが、この記事では、
ワールドにアップロードする直前のアセットバンドルファイルから、容量を削減する方法を解説します。
この記事を書くときの環境
この記事を書いたときの開発環境を書いておきます。
- Unity 2021.3.4f
- AssetStudio.net472.v0.16.47
- Windows 11
ファイル容量削減の手順
AssetStudioをダウンロードする。
以下のサイトにアクセスして、AssetStudioをダウンロードします(Win版のみ)
筆者は、2023年4月6日の時点では「AssetStudio.net472.v0.16.47」をダウンロードしました。
AssetBundle (アセットバンドル) の出力先の確認する
Unityからワールドのアップロードを実行すると、ビルドが実行され、アセットバンドルと呼ばれるファイルを作成します。アセットバンドルの作成が終わると、cluster kitが自動的にclusterのサーバにアセットバンドルファイルをアップロードします。その結果、ワールドが更新されるのです。
アセットバンドルとワールド更新の関係は、以下のとおりです。
ここでは、AssetBundle (アセットバンドル) の出力先の確認方法を解説します。
まずは、手順の中で使用するスクリプトを記載します。ファイル名は必ず「TemporaryCachePath.cs」としてください。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TemporaryCachePath : MonoBehaviour
{
void Start()
{
// print the path to the temporary data folder
print(Application.temporaryCachePath);
}
}
- 上記のスクリプトを用意します。
- Unityを開いてHierarchyで適当なゲームオブジェクトを作成する
- ゲームオブジェクトに①で用意したスクリプトを貼り付ける
- ゲームプレイする
コンソール上にアセットバンドルの出力先が出力されるのでメモる
以上で、AssetBundle (アセットバンドル) の出力先の確認が終わりです。
ワールドをアップロードする
clusterメニューから、いつも通りワールドをアップロードします。
閉じてしまうと、出力されたアセットバンドルも消されてしまいます
この結果、AssetBundle (アセットバンドル) が、前の章で紹介した出力先に出力されます。
AssetStudioでアセットバンドルを解析する(ワールドで使用しているリソースを確認する)
- AssetStudioGUI.exeをダブルクリックして、AssetStudioGUIを実行します
- 前の章でメモしたアセットバンドルの出力先フォルダを開く
- 「iOS」などのプラットフォーム名のフォルダがあるのでどれか開く。
- その中でファイル容量が一番大きいもの(ワールドに上げたときの容量とほぼ同じ数字になります)を選んで、マウスで移動してAssetStudioGUIで開く。ファイル名は、以下のようなイメージです。
- AssetStudioGUIからAssetListタブを開く
その結果、これからアップロードされる予定のテクスチャ、メッシュ(モデル)など一覧表示され、ファイル使用容量もわかります。この情報をもとに容量削減をしていきましょう!
筆者の場合は、上記の図から「NotoSansJP」フォントで16Mも使っていることがわかりました。
日本語すべてをフォントに打ち込んでいたから、たしかに重いはずだ・・・。
その他、テクスチャサイズが「2048✕2048」になっている物があったので、必要に応じて1024に圧縮するなどして容量削減をしました。
まとめ
今回は、AssetStudioを使ったワールドの容量削減方法を解説しました。
ワールドの容量削減は、面倒な作業ですが、この記事が少しでも役にたったら幸いです。
【おまけ】容量の解析ならWizTreeで良くない?【ひとつだけ問題あり】
簡単に利用できそうだし、手軽に解析したいと思うんだ
たしかに、WizTreeなら簡単に利用できそうです。
しかし、WizTreeだと、ワールドで使っていないファイルについても抽出される可能性があります。その結果、WizTreeで出てきた大きなファイルを削除したとしても、ワールドの容量に変化がないことがあります。
なぜそのようなことが起きるのかというと・・・・
WizTreeは、指定したディスクドライブ(Unityのプロジェクトフォルダ)のファイル解析ソフトです。
ワールドにアップロードされるファイルは、アップロード対象のシーンで使われているもののみです。仮に、プロジェクト内に10Gほどのファイルが有っても、シーンで使われていなければアップロードされません。
その結果、WizTreeで解析した場合は、アップロード非対象のファイルも抽出されてしまうので、解析する際にはノイズ(解析には無関係なデータ)になってしまいます。
以上のことから、WizTreeは、プロジェクト内のファイル全てをシーン内で使っていない限りは、解析結果にノイズが入ってしまうためclusterのワールド容量削減の手段としては向いてないと思います。
ワールドの容量を解析するのに、一番適しているのが、2023年4月6日の時点では、おそらくアセットバンドルファイルを直接解析できるAssetStudioです。