ScriptableObject Catalog
Finds every ScriptableObject asset under Assets/ and groups instances by C# type.
Editor-only. Unity 2021.3+. Lives in Rivet.Editor (includePlatforms: Editor). No extra packages.
Editor window
ArTchie / Rivet / ScriptableObject Catalog
| Button | What it does |
|---|---|
| Scan | AssetDatabase.FindAssets("t:ScriptableObject", ["Assets"]), then LoadAllAssetsAtPath so sub-assets are included. |
| Copy JSON | Puts the report JSON on the clipboard. |
| Write report | Writes <project>/RivetReports/scriptable-object-catalog.json (creates the folder if needed). |
| Ping / Select | Focuses that instance in the Project window (PingObject / Selection.activeObject). |
Left column is types (name + count). Right column is instances of the selected type.
Skips Packages/ and Library/. EditorWindow assets are ignored if they appear.
Batchmode (CI)
Unity -batchmode -nographics -quit -projectPath <proj> -executeMethod Rivet.ScriptableObjectCatalog.RunBatch -rivet-out <file.json> -rivet-fail
| Arg | Meaning |
|---|---|
-rivet-out <file.json> |
Output path. Default: <project>/RivetReports/scriptable-object-catalog.json |
-rivet-fail |
Exit code 1 if any missing-script / unreadable ScriptableObject asset was found; otherwise 0 |
RunBatch only calls EditorApplication.Exit when Application.isBatchMode is true. It logs typeCount=, count=, and the output path.
Also accepts -rivet-out=file.json. A clean empty project has count: 0 and exits 0 even with -rivet-fail.
JSON
{
"tool": "ScriptableObjectCatalog",
"generatedUtc": "2026-08-18T02:00:00Z",
"typeCount": 1,
"count": 2,
"types": [
{
"type": "MyGame.FooSettings",
"count": 2,
"items": [
{ "assetPath": "Assets/Settings/Foo.asset", "name": "Foo" },
{ "assetPath": "Assets/Settings/Bar.asset", "name": "Bar" }
]
}
]
}
type is System.Type.FullName (falls back to Name). Types are sorted by name; instances by assetPath then name. count is the total instance count; typeCount is types.Length.
Assets that FindAssets returned but that have no loadable ScriptableObject (missing script, unreadable) are grouped as "(Missing ScriptableObject)".
Notes
- Sub-assets in the same
.assetfile are listed separately when they are ScriptableObjects. - Empty projects and a missing
RivetReportsfolder are fine (types: []). - Does not create, move, or delete assets. Does not touch runtime player code.
Source in the box: Assets/ArTchie Studios/ArTchie-Suite/com.artchie.rivet/Documentation/ScriptableObjectCatalog.md