その他のユーティリティ
メニューひとつで完結する小物機能のまとめです。
Assets / Copy GUID
Project でアセットを右クリック → Copy GUID で、そのアセットの GUID をクリップボードにコピーします。
Assets / Copy Assets With Dependency
Project で複製したいアセット群をまとめて選択して右クリック → Copy Assets With Dependency。 選択したアセットを新しい GUID で丸ごと複製し、複製同士の参照を張り替えます。 「配布モデルのマテリアル改変バリエーションを、元を上書きせずに作る」ような時に。
- 依存関係の自動収集はしません — 一緒に複製したい依存アセット (マテリアル・テクスチャ等) も含めて選択してください
- 選択に含めなかったアセットへの参照は、元のアセットを指したまま維持されます
- フォルダを選択すると
フォルダ copy/に構造ごと複製されます - .meta はインポート設定を保ったまま GUID だけ差し替えてコピーされます
クレジット
Narazaka さんの CopyAssetsWithDependency (Zlib License、原作: k7a さんの Qiita 記事) を改変移植したものです。
コンポーネントの全プロパティコピー
コンポーネントの ⋮ メニュー (または右クリック) に 2 つ追加されます:
- Copy Component All — 全プロパティをコピー
- Paste Component All As New — 別のコンポーネントとして貼り付け (元とは独立したインスタンス)
Unity 標準の Copy Component / Paste Component As New と違い、参照も含めてまとめて複製したい時に。
StateMachineBehaviour のコピー & リネーム
Animator の State に付いた StateMachineBehaviour の ⋮ メニューに追加されます:
- Copy Behaviour / Paste Behaviour As New — 別インスタンスとして複製
- Rename — Behaviour サブアセットの名前変更
Humanoid ポーズのリセット
Animator コンポーネントの ⋮ メニュー (または右クリック) に Reset Humanoid Pose が追加されます。ポーズ付けで動かしたボーンを、モデルのインポート時ポーズ (T ポーズなど) にまとめて戻します。
- マッピングされている全 Humanoid ボーンが対象 (指・目・顎まで)。スケールは触りません
- リファレンスポーズは Avatar アセット自身のスケルトン情報から取るので、Avatar が FBX の外にある (コピーされた .asset など) モデルでも動きます
- Humanoid でない場合や Avatar 未設定の場合はダイアログで知らせて何もしません。Undo 1 回で戻せます
クレジット
gatosyocora さんの VRCDeveloperTool (zlib License) の HumanoidPoseResetter を原案として、リファレンスポーズの取得方式を変えて実装したものです。
EditorOnly タグのワンキー切替
GameObject/Toggle EditorOnly Tag (Alt+Shift+S) — 詳細は Hierarchy 拡張 を参照してください。
Sort SerializedUdonPrograms Worlds SDK
上部メニューの さたにあしょっぴんぐ/エディタカスタマイザー/Misc/Sort SerializedUdonPrograms — ワールド制作向け。 SerializedUdonPrograms 配下に散らばるアセットを、対応する Udon プログラムのフォルダへ振り分けて整理します。
Package Manager のお気に入り (Favorites)
よく使うパッケージのために毎回タブを移動して検索するのをやめられます。
- パッケージを選択すると、詳細ペインの Install ボタンの横に ★ ボタンが付きます。クリックでお気に入りに登録 / 解除 (登録済みは金色)
- スコープ切替ドロップダウンに ★ Favorites タブが増え、登録したパッケージ / アセットを一覧できます
- パネル右上の 「+」ボタンから、Package Manager に出てこないものも登録できます (ファイル / フォルダはパネルへのドラッグ & ドロップでも追加できます):
- .unitypackage ファイル
- UPM / VPM 形式のフォルダ (package.json を含むフォルダ。表示名とバージョンは package.json から読みます)
- git URL (
https://….git?path=…#ref形式。表示名は URL から推測され、初回 Install 後に実際のパッケージ名へ更新されます)
- 一覧の行から直接操作できます:
- Install (UPM / git URL / UPM フォルダ) — Package Manager を経由せずプロジェクトに追加。git URL は URL から、UPM フォルダは
file:依存として追加します (導入済みなら「導入済み」表示)- git URL の Install が git の所有者チェックで拒否された場合 (exFAT / FAT32 など所有者を記録しないドライブ上のプロジェクトで
fatal: not in a git directory/dubious ownershipになる。Package Manager 標準の Add package from git URL でも同じ) は、原因と回避コマンドgit config --global --add safe.directory "<ドライブ>:/*"をダイアログで案内します (「コマンドをコピー」でクリップボードへ)
- git URL の Install が git の所有者チェックで拒否された場合 (exFAT / FAT32 など所有者を記録しないドライブ上のプロジェクトで
- Import (My Assets / .unitypackage) — ダウンロード済み、またはファイルの .unitypackage を直接インポート (未ダウンロードなら案内を表示)
- 開く — Package Manager でそのパッケージを表示。.unitypackage ファイルと未導入の UPM フォルダはエクスプローラで場所を開きます
- パスが見つからない (移動・削除された) 登録は赤字になり、Install / Import は押せなくなります (削除は可能)
- Install (UPM / git URL / UPM フォルダ) — Package Manager を経由せずプロジェクトに追加。git URL は URL から、UPM フォルダは
- 既にプロジェクトに入っている git / ローカル (
file:) 由来のパッケージを ★ で登録すると、URL / フォルダも一緒に記録されるので、別プロジェクトでもそのまま Install できます
Unity 2022.3 専用
Unity 6000.0 以降は Package Manager の内部構造が刷新されているため、この機能は無効になります (対応予定)。
GameView スクリーンショット / 録画
GameView 拡張 のページへ移動しました。
SceneView の MSAA / 選択アウトライン
SceneView 拡張 のページへ移動しました。
ウィンドウタブの右クリックメニュー拡張
Editor Setting の DockArea 項目 でトグル。開発者向けに、タブ右クリックへ「WindowのTypeを出力」(そのウィンドウのクラス名をログ出力) を追加できます (既定 OFF、表示は Editor Setting から)。
VPM Resolver の白い無題ウィンドウ対策
VRChat の VPM Resolver (com.vrchat.core.vpm-resolver) は、起動時に [InitializeOnLoad] からパッケージの解決チェックを行い、未解決があれば確認ダイアログ → 「Show Me What's Missing」で Package Resolver ウィンドウを開きます。Unity 2022.3 のアセットインポートワーカー (別プロセスの Unity.exe -batchMode) でも同じコードが走り、そこではダイアログが自動キャンセルされてウィンドウ生成に進むため、タスクバーにだけ現れる真っ白で無題の Unity ウィンドウ (個数 = 起動したワーカー数) が残ります (Resolver 0.1.29 時点で未修正)。
SCE はこれを回避します。UI の無いプロセス (インポートワーカー / バッチモード) でだけ動き、通常のエディタでは何もしません。ON/OFF は Editor Setting の BugFix 項目 (既定 ON) から。
- Resolver より先に初期化できた場合は、そのプロセスでの起動チェック自体をスキップさせます
- 先に窓が作られていた場合は、全ての初期化が終わった時点で閉じます (
Logs/AssetImportWorker*.logに「VPM Resolver がヘッドレスプロセス … に作ったウィンドウを閉じました」と出ます) - 念のため、そのプロセスでは Package Resolver ウィンドウを開く処理も無効化します
TIP
根本的には、プロジェクトの Packages/vpm-manifest.json に解決できないエントリが残っている (起動のたびに Resolver のダイアログが出る) 状態を直せば発生しなくなります。
Harmony が動いていない環境 (Apple Silicon の Mac)
Apple Silicon の Mac では、VRChat SDK 同梱の Harmony (0Harmony 2.0.5) が macOS のメモリ保護 (W^X) に対応しておらず、SCE / Modular Avatar / NDMF の Harmony パッチが全て mprotect returned EACCES で失敗します (SCE の Harmony 依存機能は動きません)。
SCE はこの失敗を最初の 1 回で検知し、パッチごとの例外ではなく警告 1 回にまとめます (全ての初期化が終わった後に 1 回だけ再試行するので、後述のパッケージが入っていれば初期化の順序に関係なく当たります)。それでも当たらない場合、macOS では anatawa12 さんの Harmony Patches for Apple Silicon (native & Rosetta) (com.anatawa12.apple-silicon-harmony) をインストールするか確認するダイアログを出します。「インストールする」で VPM リポジトリ (https://vpm.anatawa12.com/vpm.json) から取得してプロジェクトに追加し、ALCOM / VCC にもリポジトリを登録します (VPM Resolver が無いプロジェクトでは登録ページを開いて案内)。「今後表示しない」は Editor Setting の BugFix 項目 から戻せ、同じ場所にインストールボタンもあります。
Light Probe Generator (ワールド向け)
上部メニューの さたにあしょっぴんぐ/エディタカスタマイザー/Misc/Light Probe Generator で開きます。指定した Box 範囲に LightProbe を格子状に自動配置するツールです。
- 配置領域はウィンドウを開いている間 SceneView に緑の枠で表示され、角/面ドラッグと中心ハンドルで直接編集できます。「選択オブジェクトから範囲を取得」でワールドの地形などから一発設定も可能
- 配置間隔 (m) で格子の細かさを指定。格子は領域内に中央寄せで敷かれます
- 配置禁止領域を複数追加できます (SceneView に赤い枠で表示・編集可)。禁止領域内の格子点はスキップされます
- 生成先はシーン上の LightProbeGroup。同名のグループがあれば作り直さず上書き更新するので、範囲を調整しながら何度でも生成し直せます。プローブが少ないときは配置位置の黄色いプレビュー点も出ます