【Unity】プロジェクトを作成したらとりあえずインポートするアセット集

# はじめに
プロジェクト新規作成時にダウンロード先を探すのが面倒なので、最初にインストールする機会の多いアセットのリンク集を共有します。

# スクリプト関連

## UniTask
非同期使うなら必須

https://github.com/Cysharp/UniTask

## UniRx
依存性が逆向きのスクリプトに対してメッセージ通知するときは必須

https://assetstore.unity.com/packages/tools/integration/unirx-reactive-extensions-for-unity-17276

## R3
UniRxの後継的な位置付けのライブラリでパフォーマンスに優れています
※2024/02/27時点ではUniRxの機能が一部不足しているため注意が必要です

https://github.com/Cysharp/R3

## MessagePipe

UniRxのMessageBrokerはスコープが広すぎるのでMessagePipeがオススメです。
https://github.com/Cysharp/MessagePipe


## Extenject(Zenject)
依存性注入したいときに必須
パフォーマンスはVContainerの方が優れているので、どうしても使いたい機能がExtenjectにしかない場合を除いてVContainerがオススメ

https://assetstore.unity.com/packages/tools/utilities/extenject-dependency-injection-ioc-157735

## VContainer
Extenjectが2020年で止まっているのでUnity2020以降で依存性注入したいとき使用する

https://github.com/hadashiA/VContainer

導入にはパッケージインストール以外にも手順があるのでこちらを参照すること

https://vcontainer.hadashikick.jp/ja/getting-started/installation

### 2023/09/29追記
現時点でChatGPTに頼って実装するのであればVContainerは学習データが不足しているため、Zenjectを使う方がおすすめです。

## MessagePipe
メッセージライブラリ
疎結合なメッセージのやり取りができるのでアンチパターンなSingeletonに依存したくない場合などに使える
IObservableを実装しているクラスに依存してしまうUniRxより疎結合な実装ができる
DI系のライブラリの使用が前提になっている

https://github.com/Cysharp/MessagePipe

## DOTween
線形補完でゲームオブジェクトを動かしたい場合等に使える
Scripting Define SymbolsにUNITASK_DOTWEEN_SUPPORTを追加するとUniTaskでawaitできるようになる
有償版も存在するが無償版でも十分使える

https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676

### 2023/09/29追記　
MagicTweenという上位互換的なライブラリも存在します。
ChatGPTを使うなら学習済みのDOTweenの方が速く実装できますが、高速に動作させたいならこちらの方がおすすめです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1336886/005a3e8a-7b3d-51a5-b34b-d9bec7ed3b58.png)

https://github.com/AnnulusGames/MagicTween/tree/main


# UnityEditor関連
## Odin　※有償
Inspectorの機能を拡張できる
以下はよく使う拡張
* [ReadOnly]
    * 読み取り専用プロパティをシリアライズ
* [indent(int)]
    * インデントの挿入
* [Button (文字列)]
    * ボタン表示及びメソッドの実行
* SerializedMonoBehaviourの継承
    * Dictionary型をシリアライズ

https://assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041

## Serialize Interfaces!

ライセンス金額の関係で前述のOdinが使えないプロジェクトでInterfaceをシリアライズすることができます。

https://assetstore.unity.com/packages/tools/utilities/serialize-interfaces-187505

## RiderFlow
UnityEditorに便利機能を追加するパッケージ

https://www.jetbrains.com/riderflow/

# グラフィック関連

## Magic Light Probes　※有償
StaticBakeLightに対していい感じの位置にLightProbeを配置してくれる

https://assetstore.unity.com/packages/tools/utilities/magic-light-probes-157812

## LightShafts
Unity標準機能ではライトシャフト（光線等）表現を利用できませんが、こちらは無料で使用することができます。

https://github.com/robertcupisz/LightShafts

# XR関連

## AR Foundation Remote2　※有償
AR Foundationを使用してデバッグするなら必須
UnityEditor上でARアプリのデバッグができるようになる

https://assetstore.unity.com/packages/tools/utilities/ar-foundation-remote-2-0-201106

## UniVRM
VRMアバターを利用する場合は必須

https://github.com/vrm-c/UniVRM

## FinalIK　※有償
アバターのアニメーションを自作したり、VRでプレイヤーを操作する際に逆運動学を利用する場合は必須
BioIKでも安価で同じことができるが、情報量が圧倒的に多いのでこちらの方がおすすめ

https://assetstore.unity.com/packages/tools/animation/final-ik-14290

## OculusIntegration
みんな大好きMetaQuest(OculusQuest)専用機能を使うならこれで開発する
マルチプラットフォームで開発するならOpenXR + XR InterActionToolKit(またはVRInteractionFrameworkとかVRInteractionとか) の組み合わせを選択するのが良さげ

https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022

# マルチプレイ関連

## PUN2
人気のマルチプレイヤー用SDK
PhotonサービスのUnity用パッケージで20CCUまで無料で使えて、自前Windowsサーバー(PhotonServer)なら100CCUまで使える

https://assetstore.unity.com/packages/tools/network/pun-2-free-119922

# モデリング関連

## Metamesh
UnityJapanのkeijiroさんが制作した、簡易な形状のメッシュ(ディスク,IsoSphere,台形,円錐,蓋無し円柱など)をProBuilderより簡単に作れるパッケージ

https://github.com/keijiro/Metamesh

カスタムパッケージのため、パッケージマネージャのデフォルト状態ではインストールできないので注意。
インストール方法はコチラ

https://www.youtube.com/watch?v=gX8IDNb5glc&t=0s