Skip to content

Other Utilities ​

A collection of small features, each done with a single menu command.

Assets / Copy GUID ​

Right-click an asset in the Project window → Copy GUID copies that asset's GUID to the clipboard.

Assets / Copy Assets With Dependency ​

In the Project window, select all the assets you want to duplicate at once, then right-click → Copy Assets With Dependency. The selected assets are duplicated in full with new GUIDs, and references between the copies are rewired to point at each other. Useful for cases like "creating a material variant of a distributed model without overwriting the original".

  • Dependencies are not collected automatically — include any dependent assets you want copied along (materials, textures, etc.) in the selection
  • References to assets not included in the selection are kept pointing at the original assets
  • Selecting a folder duplicates it, structure and all, as <folder name> copy/
  • .meta files are copied with only the GUID replaced, keeping the import settings
Credits

A modified port of Narazaka's CopyAssetsWithDependency (Zlib License; original work: k7a's Qiita article).

Copy All Component Properties ​

Two items are added to a component's ⋮ menu (or its context menu):

  • Copy Component All — copies every property
  • Paste Component All As New — pastes it as a separate component (an instance independent of the original)

Use this when you want to duplicate everything, references included — something Unity's standard Copy Component / Paste Component As New does not do.

StateMachineBehaviour Copy & Rename ​

Added to the ⋮ menu of a StateMachineBehaviour attached to an Animator State:

  • Copy Behaviour / Paste Behaviour As New — duplicate it as a separate instance
  • Rename — rename the Behaviour sub-asset

Humanoid Pose Reset ​

Reset Humanoid Pose is added to the ⋮ menu (or context menu) of the Animator component. It returns all the bones you moved while posing back to the model's import pose (T-pose, etc.) at once.

  • Applies to every mapped Humanoid bone (including fingers, eyes, and jaw). Scale is left untouched
  • The reference pose is taken from the Avatar asset's own skeleton data, so it also works for models whose Avatar lives outside the FBX (such as a copied .asset)
  • If the model is not Humanoid or no Avatar is set, a dialog tells you so and nothing is changed. The operation can be reverted with a single Undo
Credits

Based on HumanoidPoseResetter from gatosyocora's VRCDeveloperTool (zlib License), reimplemented with a different way of obtaining the reference pose.

EditorOnly Tag One-Key Toggle ​

GameObject/Toggle EditorOnly Tag (Alt+Shift+S) — see Hierarchy Extension for details.

Sort SerializedUdonPrograms Worlds SDK ​

Main menu さたにあしょっぴんぐ/エディタカスタマイザー/Misc/Sort SerializedUdonPrograms (Satania Shopping / Editor Customizer / Misc / Sort SerializedUdonPrograms) — for world creation. Sorts the assets scattered under SerializedUdonPrograms into the folders of their corresponding Udon programs.

Package Manager Favorites ​

No more switching tabs and searching every time for the packages you use often.

  • When a package is selected, a ★ button appears next to the Install button in the details pane. Click it to add the package to / remove it from your favorites (gold when added)
  • A ★ Favorites tab is added to the scope dropdown, listing the packages / assets you have registered
  • The "+" button at the top right of the panel registers things that do not appear in the Package Manager (files / folders can also be dragged and dropped onto the panel):
    • .unitypackage files
    • UPM / VPM format folders (a folder containing package.json; the display name and version are read from package.json)
    • git URLs (https://….git?path=…#ref form; the display name is guessed from the URL and replaced with the real package name after the first Install)
  • You can act directly from the rows in the list:
    • Install (UPM / git URL / UPM folder) — add it to the project without going through the Package Manager. git URLs are added from the URL, UPM folders as a file: dependency (shows 「導入済み」 (Installed) when already in the project)
      • When a git URL install is rejected by git's ownership check (projects on drives that do not record ownership such as exFAT / FAT32 fail with fatal: not in a git directory / dubious ownership; the Package Manager's own Add package from git URL fails the same way), a dialog explains the cause and offers the workaround command git config --global --add safe.directory "<drive>:/*" (「コマンドをコピー」 copies it to the clipboard)
    • Import (My Assets / .unitypackage) — import the downloaded or file-based .unitypackage directly (shows guidance if it has not been downloaded yet)
    • 開く (Open) — show that package in the Package Manager. For .unitypackage files and UPM folders that are not installed, it opens the location in Explorer
    • Entries whose path can no longer be found (moved or deleted) are shown in red and their Install / Import buttons are disabled (delete still works)
  • When you ★ a package that came from git or a local (file:) folder, the URL / folder is recorded with it, so it can be installed as-is in another project

Unity 2022.3 only

On Unity 6000.0 and later, the internal structure of the Package Manager has been reworked, so this feature is disabled (support planned).

Game View Screenshot / Recording ​

Moved to the Game View Extension page.

Scene View MSAA / Selection Outline ​

Moved to the Scene View Extension page.

Window Tab Context Menu Extension ​

Toggle it on the DockArea item of Editor Setting. For developers, this can add 「WindowのTypeを出力」 (Print Window Type — logs that window's class name) to the tab's context menu (off by default; the toggle is in Editor Setting).

Workaround for the VPM Resolver's blank, title-less windows ​

VRChat's VPM Resolver (com.vrchat.core.vpm-resolver) checks package resolution from [InitializeOnLoad] at startup and, if something is unresolved, shows a confirmation dialog whose "Show Me What's Missing" branch opens the Package Resolver window. The same code also runs inside Unity 2022.3's asset import workers (separate Unity.exe -batchMode processes), where the dialog is auto-cancelled and the code proceeds to create the window, leaving blank white, title-less Unity windows that appear only in the taskbar (one per started worker). This is unfixed as of Resolver 0.1.29.

SCE works around it. It only acts in processes without a UI (import workers / batch mode) and does nothing in the normal editor. Toggle it on the BugFix item of Editor Setting (default ON).

  • If it initializes before the Resolver, it makes that process skip the startup check altogether
  • If the window was already created, it closes it once all initialization has finished (Logs/AssetImportWorker*.log shows a 「VPM Resolver がヘッドレスプロセス … に作ったウィンドウを閉じました」 (closed the windows created in a headless process) line)
  • As a safeguard, opening the Package Resolver window is also disabled in that process

TIP

The root cause disappears if you fix the unresolvable entries left in the project's Packages/vpm-manifest.json (the state where the Resolver dialog appears at every startup).

When Harmony does not work (Apple Silicon Macs) ​

On Apple Silicon Macs the Harmony bundled with the VRChat SDK (0Harmony 2.0.5) does not support macOS memory protection (W^X), so every Harmony patch of SCE / Modular Avatar / NDMF fails with mprotect returned EACCES (SCE's Harmony-based features do not work).

SCE detects the failure on the first patch and reports a single warning instead of one exception per patch (it retries once after all initialization has finished, so if the package below is installed the patches apply regardless of initialization order). If they still fail, on macOS a dialog asks whether to install anatawa12's Harmony Patches for Apple Silicon (native & Rosetta) (com.anatawa12.apple-silicon-harmony). 「インストールする」 (Install) fetches it from the VPM repository (https://vpm.anatawa12.com/vpm.json), adds it to the project and registers the repository in ALCOM / VCC (projects without the VPM Resolver get the add-repository page instead). 「今後表示しない」 (Don't show again) can be reverted on the BugFix item of Editor Setting, which also has an install button.

Light Probe Generator (for worlds) ​

Open it from the main menu さたにあしょっぴんぐ/エディタカスタマイザー/Misc/Light Probe Generator. It automatically places LightProbes in a grid within a specified Box range.

  • The 配置領域 (placement area) is shown as a green frame in the Scene view while the window is open, and can be edited directly by dragging its corners/faces and the center handle. 「選択オブジェクトから範囲を取得」 (Get Range from Selected Objects) lets you set it in one step from the world's terrain, etc.
  • 配置間隔 (m) (Spacing (m)) sets how fine the grid is. The grid is laid out centered within the area
  • Multiple 配置禁止領域 (exclusion zones) can be added (shown as red frames in the Scene view, and editable there). Grid points inside an exclusion zone are skipped
  • The output is a LightProbeGroup in the scene. If a group with the same name already exists, it is updated in place instead of being recreated, so you can regenerate as many times as you like while adjusting the range. When there are only a few probes, yellow preview points also mark the placement positions

MIT License