はじめに
- 自分が GitHub に公開している Unity パッケージを300個以上まとめました
- 各パッケージは Unity Package Manager からインストール可能です
- まだドキュメントを記載できていないパッケージもあるのでご了承ください
- 多くのパッケージのライセンスは Unlicensed ですが、
一部 MIT ライセンスのパッケージも存在します - いくつかのパッケージは他のパッケージに依存しているため、
そのパッケージをインストールしただけだとエラーが発生する可能性があります
目次
エディタ拡張
Inspector
- Inspector のヘッダにボタンを追加
- 親オブジェクトの位置のみリセット
- フォルダの Inspector にボタンを追加
- Transform の Inspector にリセットボタンを追加
- RectTransform の Pos Z と Scale の値をリセット
- Dictionary を Inspector で設定できるようにするクラス
- Inspector にチェックボックス付きのフィールドを表示
- Inspector で AnimationCurve をコピー・ペーストできる
- Inspector でゲームオブジェクトの編集を不可能にできる
- 指定したコンポーネントの Inspector における並び順を一番上に移動
- RectTransform の Anchor をストレッチにして親の描画サイズに合わせる
- エディタのレイアウトファイル(.wlt)の Inspector に読み込みボタンを追加
- 参照型のパラメータを右クリックした時のメニューに GetComponent を追加
- 親オブジェクトが子オブジェクトをすべて内包するように位置とサイズを調整
- ContentSizeFitter の FitMode を PreferredSize にするコマンドをメニューに追加
- LayoutGroup の Inspector のコンテキストメニューに Add ContentSizeFitter を追加
- TextMesh Pro の Inspector のコンテキストメニューに Add ContentSizeFitter を追加
- RectTransform のパラメータを四捨五入するコマンドをコンテキストメニューに追加
- Inspector で参照が設定されていないパラメータが存在したら Unity を再生できなくする
- ゲームオブジェクトの Inspector のヘッダに「Paste Component As New」ボタンを追加
- RectTransform の Inspector にリセット、フィット、四捨五入、AddComponent のボタンを追加
Project ビュー
- アセットを Visual Studio Code で開く
- 特殊なフォルダを作成するメニューを追加
- スプライトに設定されている Border を解除
- Project ビューでアセットのフルパスをコピー
- アセットの生データをクリップボードにコピー
- Project ビューで複数のアセットのパスをコピー
- Mac における Project ビューでフォルダを先頭に表示
- 現在アクティブなシーンのアセットをハイライト表示
- スプライトの Border をコンテキストメニューから設定
- Assembly Definition を作成する時のコンパイル回数を抑える
- Project ビューでアセットを移動する時に確認ダイアログを表示
- エディタ上でフォルダを移動しようとした時に確認ダイアログを表示
- ripgrep を使用して指定したアセットを参照している他のアセットを検索
- Project ビューを右クリックした時に表示されるメニューをカスタマイズ
- 指定したフォルダ内のアセットがフォルダ外のアセットを参照していないか確認
EditorWindow
- ブックマーク
- シンボルを簡単に定義
- コンパイル時間を計測1
- コンパイル時間を計測2
- カスタマイズ可能なツールバー
- Unity 再生時の開始シーンを設定
- 選択中のファイルの数を常に表示
- uGUI のオブジェクトを作成できるツールバー
- EditorPrefs が保存しているすべてのキーと値を閲覧
- Application.dataPath などで取得できる文字列を一覧で表示
スクリプト
- using Boo.Lang のコード補完を無効化
- using static を使用して OnGUI の記述を少し楽にする
- EditorPrefs に関するコードを記述しやすくするクラス
- アセットのパスに関する処理を記述しやすくする構造体
- EditorUtility.DisplayDialog に関する記述を短く書けるようにするクラス
- EditorApplication の internal な機能を使用できるようにするパッケージ
- エディタがフォーカスされた、フォーカスが外れた時に呼び出されるコールバック
- コマンドライン引数を解析して指定されたクラスのインスタンスに変換するパッケージ
Scene ビュー
- Scene ビューのアイコンをすべて非表示にする
- Scene View のカメラの位置と角度をシーンのメインカメラに同期
- Scene ビューに UI レイヤーの表示の ON / OFF を切り替えるボタンを追加
- Raycast Target が true なゲームオブジェクトの描画範囲を Scene ビューに表示
- UI が選択されている時に Scene ビューに 1 pixel 単位で移動させるボタンを表示
- Scene ビューでカーソルキーを押すことで UI オブジェクトを 1 pixel 単位で動かす
Hierarchy
- Hierarchy に Raycast Target を変更するボタンを追加
- Hierarchy にシーンファイルを Ping するボタンを追加
- Hierarchy と Project ビューの開いている階層をすべて閉じる
- ゲームオブジェクトの Hierarchy における階層のパスをコピー
- Hierarchy を右クリックした時に表示されるメニューをカスタマイズ
- Hierarchy にゲームオブジェクトのアクティブを変更するボタンを追加
一括処理
- すべてのシーンに対して処理を行うクラス
- シーンやプレハブから Missing Script を削除
- すべてのシーンの Global Illumination を無効化
- すべてのシーンの Skybox Material を null にする
- アセットに設定されたアセットバンドル名をすべて削除
- すべてのシーンやプレハブに存在するすべてのオブジェクトに対して処理を行うクラス
再生・停止
- 再生ボタンの左右に GUI を追加
- F5 で Unity を再生、Shift + F5 で停止
- Unity 再生時に AssetDatabase.SaveAssets を実行
- Missing Script が存在したら Unity を再生できなくする
- Unity でゲームを再生する時に指定したアセットを AssetDatabase.ImportAsset
AssetPostprocessor
- .csproj の言語バージョンを 8.0 にする
- C# スクリプトの改行コードを Win に統一
- 指定されたアセットの改行コードを Win に統一
- テクスチャや SpriteAtlas のインポート設定を自動化
- インポートされた C# スクリプトの文字コードを UTF-8 BOM付 に変換
Attribute
- Inspector で列挙型が検索できる
- シリアライズ対象の変数に自動で参照を割り当てる
- コンポーネントがシーンに1つだけ存在することを保証
- 指定したコンポーネントの Inspector における並び順を自動で一番上に移動
- コンポーネントをアタッチした時にオブジェクトの名前をコンポーネント名にリネーム
Unity エディタ
- Unity エディタのタイトルを変更
- Unity エディタを終了する時に確認ダイアログを表示
- Unity プロジェクトのフォルダをエクスプローラで開く
- Unity エディタのタイトルバーに Git のブランチ名を表示
uss
ビルド
- ビルド時に確認ダイアログを開く
- アプリをビルドするを簡単に記述できる機能
- BuildReport を JSON 形式で出力できるようにする機能
- ビルド開始時に BuildReport を JSON 形式で Resources フォルダ内に保存
Game ビュー
InitializeOnLoad
- Unity プロジェクトを開いた時に Android の keystore のパスワードを自動で設定
- Unity 起動時や再生時に Console の Clear on Play と Show Timestamp をオンにする
- Unity プロジェクトを開いた時に Visual Studio や Rider などのコードエディタを自動で起動
Code Generator
Utils
- Package Manager を操作する機能を管理するクラス
- AssetDatabase 型に関係する汎用的な関数を管理するクラス
- Git のブランチ名やコミットハッシュ、コミットログを管理するスクリプトを生成
Tilemap
- Tilemap に塗ったすべてのタイルを削除するメニューを追加
- Tilemap が複製された時に、複製された Tilemap を Active Tilemap に自動で設定
- Tilemap オブジェクトが選択されたら Tile Palette の矩形ツールを選択状態にする
PostprocessBuild
Misc
- コンパイルを無効化
- すべての空フォルダを削除
- アセットを再シリアライズ
- Preferences に簡単にメニューを追加
- ファイルを開くアプリケーションを設定
- Project Settings に簡単にメニューを追加
- .unitypackage で追加されたアセットを削除
- Packages/manifest.json を開くメニューを追加
- すべてのアセットの GUID をクリップボードにコピー
- Unity のメニューから Enter Play Mode の有効・無効を変更
- Unity エディタで使用できるショートカットキーを13個追加
- 新規のシーンが作成された時に Global Illumination をオフにする
- エディタで使用されているスタイルシート(.uss)をエクスポート
- エディタの現在のプラットフォームが適切ではない場合にログを出力
- Unity エディタで Windows のメッセージボックスを表示できるパッケージ
- UI オブジェクトをコピペした時に Pos Z と Scale に変な値が入らないようにする
- シーン保存時に RectTransform の AnchoredPosition3D や SizeDelta を整数に四捨五入
- ゲームオブジェクトの複製時に名前の末尾に数値を付けず、かつ transform のプロパティに誤差が生じないようにする
拡張メソッド
- 列挙型
- UI 関連
- string 型
- シーケンス
- KeyCode 型
- TMP_Text 型
- DateTime 型
- Dictionary 型
- IDisposable 型
- StringBuilder 型
- ジェネリック型
- Vector2、Vector3 型
- 文字列を他の型に変換
- TryGetComponent 関係
- GameObject、Component 型
- bool、byte、float、int、uint 型
- Action、Func、MulticastDelegate 型
- UniTask で処理の開始時と終了時にログを出力できる
- Action デリゲートの実行前と実行後にログ出力できる
- 複数のゲームオブジェクトのアクティブを一括で変更
- async・await で処理の開始時と終了時にログを出力できる
- Mathf.Clamp、Mathf.Max、Mathf.Min を拡張メソッドで呼び出せる
- GetComponent や Find 系の関数で取得や検索に失敗した時にログ出力
- JsonUtility.ToJson を拡張メソッドで呼び出せるようにするインターフェイス
- GameObject 型や Component 型から Transform の Position、Rotation、Scale を操作
スクリプト
internal
- Project ビューの internal な機能を呼び出せるようにする
- Console ウィンドウの internal な機能を呼び出せるようにする
- RectTransform の internal な機能にアクセスできるようにする
- BuildPlayerWindow の internal な機能を使用できるようにする
- SceneHierarchy クラスの internal な機能を呼び出せるようにする
- Console ウィンドウを操作する internal な機能を使用できるようにする
using
- 経過時間を計測するクラス
- GC の発生回数を計測するクラス
- 開始と終了がある処理の終了処理の呼び出し漏れを防ぐ機能
- EditorUtility.ClearProgressBar の呼び出し漏れを防ぐためのクラス
- UnityEngine.Profiling.CustomSampler を using で使用できるようにするクラス
string
- 文字列の置換ルールを管理する構造体
- StringBuilderでコレクション初期化子を使用できるようにするクラス
- ジェネリックを使用して string.Format の GC Alloc を減らすインターフェイス
- 通常の string.StartsWith、string.EndsWith よりも高速な StartsWith、EndsWith
Debug.Log
Misc
- 参照カウンタ
- メッセージバス
- 無効値を表す構造体
- コマンドコントローラ
- gzip で文字列を圧縮する機能
- カメラを揺らすコンポーネント
- 自然順で文字列をソートできる機能
- バッテリーの情報を管理するクラス
- ストレージの空き容量を返すクラス
- シーン遷移の履歴を管理するクラス
- Slack にメッセージを送信するクラス
- ぼよよんと出る動きを管理するクラス
- 列挙型に関する汎用関数を管理するクラス
- 画面サイズに関する数値を管理するクラス
- 乱数に関する汎用的な関数を管理するクラス
- IL2CPP でビルドされたかどうかを返すクラス
- ソースコードにログ出力を簡単に埋め込める機能
- 文字列をクリップボードにコピーできるパッケージ
- コールバックの直列実行・並列実行が可能なクラス
- Action 型に関係する汎用的な関数を管理するクラス
- Json 形式の文字列を読みやすい形式に整形する機能
- 1つのキーに対して複数の値を登録できる Dictionary
- シーン遷移時に簡単にデータを渡すことができる機能
- 値型を ScriptableObject で設定できるようにする機能
- DontDestroyOnLoad を適用するだけのコンポーネント
- Renderer のマテリアルを Destroy するコンポーネント
- Selection 型に関係する汎用的な関数を管理するクラス
- Dictionary 型に関係する汎用的な関数を管理するクラス
- 値が変更された時にコールバックが呼び出されるクラス
- どこからでもコルーチンを使用できるようにするクラス
- カメラが表示している画面をテクスチャに書き込むクラス
- データを保存できるディレクトリのパスを管理するクラス
- 一定時間ごとにわざとエラーを発生させるコンポーネント
- Application.targetFrameRate を設定するだけのコンポーネント
- 複数のゲームオブジェクトのアクティブを一括で変更するクラス
- IDisposable.Dispose が呼び出されたかどうかを検知できるクラス
- Color 型と16進数、HTML カラー形式の文字列の変換ができる機能
- 他のゲームオブジェクトの当たり判定を検知できるコンポーネント
- MonoBehaviour の Update 関数の呼び出しを高速にするための機能
- MonoBehaviour の LateUpdate 関数の呼び出しを高速にするための機能
- MonoBehaviour の FixedUpdate 関数の呼び出しを高速にするための機能
- Transform・RectTransform プロパティをキャッシュする MonoBehaviour
- ゲームオブジェクトが破棄された時にイベントを実行するコンポーネント
- サーバにエラーログを送信する時に不必要な情報は送信しないようにできる機能
- ゲームオブジェクトの OnDestroy 時に IDisposable.Dispose を自動で呼び出す機能
- オブジェクトの参照が Missing Reference になっているかどうかを確認できるクラス
- UniTaskCompletionSource でタスクの開始や終了時にログ出力できるようにしたクラス
- Scene ビューでゲームオブジェクトを選択する時の優先度を上書きするコンポーネント
- UnityEngine のいくつかの API の静的プロパティの情報を JSON 形式で取得できるクラス
- C# 7.0 新機能の分解(Deconstruction)を Unity の Vector2、Vector3、Vector4、Color、Rect などのいくつかの型で使用できるようにするパッケージ
デバッグメニュー
- デバッグ用のボタンを簡単に実装できる UI
- デバッグ用のテキスト表示を簡単に実装できる UI
- タイムスケールを素早く変更できるドラッグ可能な UI
- Unity や Mono が確保したメモリの使用状況を取得できるスクリプト
- FPS、GC 発生回数、メモリ使用量を実機で確認できるプロファイラの UI
- 横向きでタップ可能なゲームで使用できるカスタマイズ可能なデバッグメニュー
UniDebugMenu
- UniDebugMenu でメモリ情報を表示できるクラス
- UniDebugMenu で任意の文字列を表示できるクラス
- UniDebugMenu でシーン遷移の履歴を表示できるクラス
- UniDebugMenu で出力されたログの一覧を表示できるクラス
- UniDebugMenu でシステム的なコマンドを実行できるクラス
- UniDebugMenu で iOS のクラッシュ情報を表示できるクラス
- UniDebugMenu で UnityEngine のクラスの情報を表示できるクラス
- UniDebugMenu でメモリに載っているアセットの情報を表示できるクラス
- UniDebugMenu でシーンのゲームオブジェクトの一覧を表示できるクラス
UI
- セーフエリア対応用のコンポーネント
- TextMesh Pro のルールを管理する機能
- 低スペックデバイス向けの UI シェーダ
- RectTransform の範囲を可視化する機能
- Image 型に関係する汎用的な関数を管理するクラス
- タップをブロックするインスタンスを管理するクラス
- UI オブジェクトをグレーアウトできるコンポーネント
- TextMesh Pro でハイパーリンクを実装するスクリプト
- リビルドされた UI オブジェクトの情報を取得できる機能
- UI の Image で文字画像を表示するためのコンポーネント
- uGUI のオブジェクトを上下左右反転できるコンポーネント
- UniTMPRule のルール名を定数で管理するクラスを生成する
- SpriteAtlas.GetSprite したスプライトをキャッシュするクラス
- RectTransform のサイズを TMP_Text のサイズに合わせる機能
- Text や TextMesh Pro のサイズをゲーム画面に可視化できるパッケージ
- テキスト設定時の GC Alloc を減らすことを目的としたインターフェイス
- グローバルな Canvas で使用するカメラを自動で割り当てるコンポーネント
- uGUI で当たり判定のみを持つ透明のオブジェクトを実装できるコンポーネント
- SpriteAtlas.GetSprite したスプライトをキャッシュするクラス(ScriptableObject 版)
- RectTransform を持つ UI がゲーム画面の範囲内に存在するかどうかを確認できる機能
- ボタンが縮小した時に当たり判定のサイズも一緒に縮小する現象を避けるコンポーネント
- シーン保存時にそのシーンが使用している SpriteAtlas の参照を自動で保持するコンポーネント
Addressable Asset System
- Addressable の .asset の改行コードを Win に統一
- Addressable の Missing File なグループをチェック
- Addressable に関する汎用的な関数を管理するクラス
- Addressable のラベルを定数で管理するクラスを生成
- Addressable の ResourceLocationMap 型の拡張メソッド
- Addressable の Missing File なグループが存在しないかのテスト
- Addressable をラップしてエラーハンドリングを充実化したパッケージ
- Addressable の AssetBundleProvider にコールバック機能を追加したパッケージ
- Unity 再生時に Addressable Asset System のデータベースの作成を無効化する機能
- Addressable で現在メモリに載っているアセットバンドルの一覧を取得できるクラス
- アセットが削除された時に Addressable Asset System のグループを更新しないようにする
- Addressable の AssetBundleResource の情報を JSON 形式で出力できるようにするクラス
モバイル
- PBXProject のラッパークラス
- PlistDocument のラッパークラス
- Android でバックキーが押された時の処理を管理するクラス
- Unity Remote 5 が接続されているかどうか確認するスクリプト
- unity-webview のマージンを RectTranform から設定できる機能
- External Tools の Android の項目の取得または設定ができるパッケージ
- Android でもソフトウェアキーボードの表示領域を取得できるパッケージ
- adb shell am start で Android アプリを起動した時に指定された引数を解析する機能
テスト
Test Runner
- 加速度センサーが無効になっているかのテスト
- Incremental GC が有効になっているかのテスト
- iOS 用のプラグインのプラットフォームが適切かのテスト
- すべてのシーンに Autio Listener が存在しないかのテスト
- すべてのシーンに対するテストを簡単に実装できるパッケージ
- Android 用のプラグインのプラットフォームが適切かのテスト
- TestRunnerApi の情報を JSON に変換できるようにするパッケージ
- Unity のデフォルトのオーディオ機能が無効になっているかのテスト
- すべてのシーンの Global Illumination が無効になっているかのテスト
- C# スクリプトの改行コードに Win と Unix が混在していないかのテスト
- プレハブのインスタンスで値が上書きされていないかどうかをテストできる機能
- すべてのシーンで Skybox マテリアルが設定されていないことを保証するテスト
- 各プラットフォームにおいてコンパイルエラーが発生しないか確認できるテストコード
- Unity Test Runner の開始終了時に呼び出されるコールバックを設定できるようにするクラス
- すべてのシーンやプレハブに存在するゲームオブジェクトに対するテストを簡単に実装できるパッケージ
- すべてのシーンやプレハブでオブジェクトの参照が Missing Reference になっていないことを保証するテスト
- すべてのシーンやプレハブに存在するゲームオブジェクトが Missing Prefab になっていないことを保証するテスト
- プレハブにアタッチされている LayoutGroup と ContentSizeFitter の enabled が true になっていないかテストできる機能
- すべてのシーンやプレハブに存在するゲームオブジェクトが Missing Script なコンポーネントを所持していないことを保証するテスト
- すべてのシーンやプレハブに存在するゲームオブジェクトで RectTransform の Position に小数点以下が存在しないことを保証するテスト
- すべてのシーンやプレハブに存在するゲームオブジェクトで TextMeshProUGUI の Raycast Target がオフになっていることを保証するテスト
- すべてのシーンやプレハブに存在するゲームオブジェクトで透明な UI の Canvas Renderer の Cull Transparent Mesh がオンになっていることを保証するテスト