Unity開発でよく使う無料ライブラリ12選
この記事はambr, Inc. Advent Calendar 2024の2日目の記事です。
開発お疲れ様です。筆者はambr所属Unityエンジニアのtanitaka-techという者です。
この記事では、私がいつも使っているライブラリをご紹介します。
その中でも実用度が高く、色々なプロジェクトで汎用的に使えるものを厳選しました。少しでも参考になれば幸いです。
目次
ライブラリ名 | リンク | 種類 |
---|---|---|
UniTask | https://github.com/Cysharp/UniTask | コード系 |
R3 | https://github.com/Cysharp/R3 | コード系 |
Zenject(Extenject) | https://github.com/modesttree/Zenject | コード系 |
NuGetForUnity | https://github.com/GlitchEnzo/NuGetForUnity | コード系 |
StateVariable | https://github.com/tanitaka-tech/StateVariable | コード系 |
UnityProcessManager | https://github.com/tanitaka-tech/UnityProcessManager | コード系 |
LicenseMaster | https://github.com/syskentokyo/unitylicensemaster | アセット管理 |
uPalette | https://github.com/Haruma-K/uPalette | アセット管理 |
SmartAddresser | https://github.com/CyberAgentGameEntertainment/SmartAddresser | アセット管理 |
UnityDebugSheet | https://github.com/Haruma-K/UnityDebugSheet | アセット管理 |
Localization | https://docs.unity3d.com/ja/2023.2/Manual/com.unity.localization.html | アセット管理 |
SerializableInterface | https://github.com/Thundernerd/Unity3D-SerializableInterface | アセット管理 |
UniTask
確かな実力に裏打ちされたその人気は凄まじく、Unityパッケージ全体でも圧倒的なスター数を誇っています。
R3
シンプルな型でイベントを表現できるのがとても素晴らしいです。
Zenject(Extenject)
後発のDIContainerと比べると少し複雑な部分があります。一方で後から機能不足で困ることが無かったり、ニッチな実装の際に"緩さ"のおかげで助かることもあったりなどチームでしっかり制御できれば、とても頼れるライブラリです。
NuGetForUnity
UnityでNugetライブラリを扱うのは癖があり、チーム開発での採用は難しいと感じていましたが、NuGetForUnity
のおかげで今では全員自由にNugetを扱えています。ライブラリの開発者的にもUnity用に開発したライブラリをNugetで公開する選択も取れるため、大変助かります。
StateVariable
Redux
やSvelte
のstore
に近い)
状態管理の仕組みがあると、開発効率がとても上がります。モジュールの取り回しのコストを減らせたり、チームで状態の共通認識があることで、設計レベルの議論が生まれやすかったりもします。(「状態AはどのContext
で保持すべきか」など)
意外にもUnityには状態管理を専門としたライブラリは少なかったため、これは筆者が作りました。
良ければ使っていただけると嬉しいです。
UnityProcessManager
それは、並列で走ってはいけない処理のハンドリングと、手続き的な処理の流れの表現です。
UnityProcessManager
はこの2つの厄介事を解決するためのライブラリになります。
細かいことは割愛しますが、このライブラリで上手く画面内の手続きが1クラスにまとめられるとそのクラスが画面フロー仕様書のように機能し、非常にコードが追いやすくなります。
イベント駆動問題の対策は共通の知見があまりネットに存在しなかったため、これも筆者が作りました。 筆者は現状この手法をベストに感じていますが、引き続き改善していきたいため、ご興味があればぜひご意見いただけると幸いです。
LicenseMaster
ライセンスをScriptableObjectで管理してメニューからコマンドを呼ぶだけでライセンステキストが生成されるため、非常に便利です。特に、不要になったOSSのライセンスを消す際にメリットを実感します。
uPalette
デザインシステムに沿ってプリセットを用意しておくとUI疎通コストを大幅に減らすことができます。また、uPalette
でUIを揃えておくとテーマ切り替えも簡単に実装できるのも良い点です。
SmartAddresser
アセットを自動でAddressablesGroupに登録する機能のおかげでチーム全体でアセット疎通の際の手順を減らすことができ、とても助かっています。
UnityDebugSheet
コードを1行追加するだけでボタンやトグル、入力フィールドなどを自由にメニューに追加できるのが大変便利です。参考までに、下記は弊プロダクトで実装しているメニューの一例です。
- トグルでフィーチャーフラグを切り替えて機能をオンオフ
- ボタンでマスターデータの読み先を切り替え
- 言語切り替え
Localization
スプレッドシートとの連携機能のおかげで、数あるローカライズの仕組みの中でも抜群の使いやすさを誇っています。
SerializableInterface
SerializeField
にinterface
を指定できるようになるライブラリです。
Viewの挙動を抽象化したいときによく使っています。
例えばUnityで"オン/オフ表示を切り替える表現"をする場合、様々な手法があります。
-
SetActive
でGameObjectの切り替える -
Timeline
を2つ用意して状態毎に再生するTimelineを切り替える -
Animation
を2つ用意して状態毎に再生するAnimationを切り替える
SerializableInterface
を使えばそういった具体的なコンポーネントを意識せずに実装を進められます。その結果Unityとコードの行き来が減ってコンパイル時間などが節約できるため、実装が非常に捗ります。
Unity開発でよく使う無料アプリ1選(蛇足)
最後までお読みいただき、ありがとうございます。
ここまで読んでくださったお礼に、とっておきのアプリを紹介させてください。
goghというアプリです。
開発仲間のNoran145さんから頂いたアバターちゃん
gogh
はアバターがとんでもなく可愛いだけでなく、ルーム編集やポモドーロタイマー、アバターカスタム機能も搭載。また、高品質なLo-Fi音楽や環境音を好きに流すことができ、自分の好みに作業環境をカスタマイズできます。
gogh
は今回紹介しきれなかったライブラリ含め、様々なライブラリのおかげで、プロダクトを磨くことに専念できています。OSS開発者の方々およびコミッターの方々には感謝で頭が禿げ散らかしそうです。本当にありがとうございます。
この記事があなたのプロダクトに少しでもお役に立てれば幸いです。
Discussion