この記事の3行まとめ
- アプリボット、Unityにおけるアセット管理システムの最適化手法をブログ記事で解説
- ResourceManagerが占有していた60MB超のメモリを、Addressableへ移行することで解放した事例が語られている
- Addressableへの移行には「EzAddresser」を採用。なお今後は最新版にあたるツール「Smart Addresser」の採用を推奨している
アプリボットは2026年6月2日(火)、「Unity大規模プロジェクトでのAddressable化によるパフォーマンス最適化」と題した記事をZennで公開しました。
Unityを用いた大規模モバイルゲーム開発において、アセット管理の仕組みを改善することでメモリの肥大化を解消する手法を解説しています。
(画像はブログ記事より引用)
アセット管理をResourcesフォルダで行う際、Resources.LoadでロードしたアセットはCPUのネイティブメモリに展開され、明示的にResources.UnloadUnusedAssetsを呼び出さない限り保持されます。そのためアセットが未使用でもアンロードされず、ResourceManagerだけで60MB超のメモリを占有してしまうという事態が発生します。
そこで、アセット管理システムを「Addressable」に移行することで、アセットデータが直接GPU側に展開されるためCPUの容量を圧迫せず、Addressables.Releaseを呼び出してハンドルを返すことで参照カウントが0となり、CPU・GPU両方のメモリが解放されます。
記事では、Addressableのアドレス登録やグループ分けを自動化するツール「EzAddresser」を導入し、効率的に移行作業を行った事例などを解説。最終的にResourceManagerで圧迫されていたメモリはほぼ0まで削減できたと述べています。
なお記事内ではEzAddresserが採用されていますが、すでに後継版にあたるツール「Smart Addresser」が公開されているため、今後はこちらの使用が推奨されています。
そのほか記事内では、Addressable移行後にロード時間が伸びた問題への対処事例や、Addressableの運用をサポートする内製ツール群などが紹介されています。
詳細は記事本文をご確認ください。
「Unity大規模プロジェクトでのAddressable化によるパフォーマンス最適化」アプリボットテックブログ|Zenn