💼

Unity開発でよく使う無料ライブラリ12選

2024/12/02に公開

この記事は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

https://github.com/Cysharp/UniTask
パフォーマンス、使いやすさ、表現力、全てを備えた非同期ライブラリです。
確かな実力に裏打ちされたその人気は凄まじく、Unityパッケージ全体でも圧倒的なスター数を誇っています。

R3

https://github.com/Cysharp/R3
パフォーマンス、使いやすさ、表現力、全てを備えたRxライブラリです。
シンプルな型でイベントを表現できるのがとても素晴らしいです。

Zenject(Extenject)

https://github.com/modesttree/Zenject
おそらくUnityで一番使われているDIContainerライブラリです。
後発のDIContainerと比べると少し複雑な部分があります。一方で後から機能不足で困ることが無かったり、ニッチな実装の際に"緩さ"のおかげで助かることもあったりなどチームでしっかり制御できれば、とても頼れるライブラリです。

NuGetForUnity

https://github.com/GlitchEnzo/NuGetForUnity
NugetのPackageをUnityで簡単に管理できるライブラリです。
UnityでNugetライブラリを扱うのは癖があり、チーム開発での採用は難しいと感じていましたが、NuGetForUnityのおかげで今では全員自由にNugetを扱えています。ライブラリの開発者的にもUnity用に開発したライブラリをNugetで公開する選択も取れるため、大変助かります。

StateVariable

https://github.com/tanitaka-tech/StateVariable
状態管理のためのライブラリです。(ReduxSveltestoreに近い)
状態管理の仕組みがあると、開発効率がとても上がります。モジュールの取り回しのコストを減らせたり、チームで状態の共通認識があることで、設計レベルの議論が生まれやすかったりもします。(「状態AはどのContextで保持すべきか」など)

意外にもUnityには状態管理を専門としたライブラリは少なかったため、これは筆者が作りました。
良ければ使っていただけると嬉しいです。

UnityProcessManager

https://github.com/tanitaka-tech/UnityProcessManager
イベント駆動は大変便利なのですが、苦手な分野が2つあります。
それは、並列で走ってはいけない処理のハンドリングと、手続き的な処理の流れの表現です。
UnityProcessManagerはこの2つの厄介事を解決するためのライブラリになります。

細かいことは割愛しますが、このライブラリで上手く画面内の手続きが1クラスにまとめられるとそのクラスが画面フロー仕様書のように機能し、非常にコードが追いやすくなります。

イベント駆動問題の対策は共通の知見があまりネットに存在しなかったため、これも筆者が作りました。 筆者は現状この手法をベストに感じていますが、引き続き改善していきたいため、ご興味があればぜひご意見いただけると幸いです。

LicenseMaster


https://github.com/syskentokyo/unitylicensemaster
使用しているライブラリやアセットのライセンスを管理するためのライブラリです。
ライセンスをScriptableObjectで管理してメニューからコマンドを呼ぶだけでライセンステキストが生成されるため、非常に便利です。特に、不要になったOSSのライセンスを消す際にメリットを実感します。

uPalette


https://github.com/Haruma-K/uPalette
プロジェクト全体で使う色やフォント設定などをプリセットとして管理できるライブラリです。
デザインシステムに沿ってプリセットを用意しておくとUI疎通コストを大幅に減らすことができます。また、uPaletteでUIを揃えておくとテーマ切り替えも簡単に実装できるのも良い点です。

SmartAddresser


https://github.com/CyberAgentGameEntertainment/SmartAddresser
Addressablesに登録する必要があるアセットの管理を簡単にするライブラリです。
アセットを自動でAddressablesGroupに登録する機能のおかげでチーム全体でアセット疎通の際の手順を減らすことができ、とても助かっています。

UnityDebugSheet


https://github.com/Haruma-K/UnityDebugSheet
ランタイムで実行可能なデバッグメニューを簡単に作成できるライブラリです。
コードを1行追加するだけでボタンやトグル、入力フィールドなどを自由にメニューに追加できるのが大変便利です。参考までに、下記は弊プロダクトで実装しているメニューの一例です。

  • トグルでフィーチャーフラグを切り替えて機能をオンオフ
  • ボタンでマスターデータの読み先を切り替え
  • 言語切り替え

Localization


https://docs.unity3d.com/ja/2023.2/Manual/com.unity.localization.html
Unity公式による多言語対応のためのライブラリです。
スプレッドシートとの連携機能のおかげで、数あるローカライズの仕組みの中でも抜群の使いやすさを誇っています。

SerializableInterface


https://github.com/Thundernerd/Unity3D-SerializableInterface
SerializeFieldinterfaceを指定できるようになるライブラリです。
Viewの挙動を抽象化したいときによく使っています。

例えばUnityで"オン/オフ表示を切り替える表現"をする場合、様々な手法があります。

  • SetActiveでGameObjectの切り替える
  • Timelineを2つ用意して状態毎に再生するTimelineを切り替える
  • Animationを2つ用意して状態毎に再生するAnimationを切り替える

SerializableInterfaceを使えばそういった具体的なコンポーネントを意識せずに実装を進められます。その結果Unityとコードの行き来が減ってコンパイル時間などが節約できるため、実装が非常に捗ります。

Unity開発でよく使う無料アプリ1選(蛇足)

最後までお読みいただき、ありがとうございます。
ここまで読んでくださったお礼に、とっておきのアプリを紹介させてください。
goghというアプリです。

開発仲間のNoran145さんから頂いたアバターちゃん

goghアバターがとんでもなく可愛いだけでなく、ルーム編集やポモドーロタイマー、アバターカスタム機能も搭載。また、高品質なLo-Fi音楽や環境音を好きに流すことができ、自分の好みに作業環境をカスタマイズできます。

goghは今回紹介しきれなかったライブラリ含め、様々なライブラリのおかげで、プロダクトを磨くことに専念できています。OSS開発者の方々およびコミッターの方々には感謝で頭が禿げ散らかしそうです。本当にありがとうございます。

この記事があなたのプロダクトに少しでもお役に立てれば幸いです。

ambr Tech Blog

Discussion