ArTchie Studios

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 .asset file are listed separately when they are ScriptableObjects.
  • Empty projects and a missing RivetReports folder 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