AssetDatabase.GetDependencies() only resolves hard (serialised field) references.
| Pattern | Tracked |
|---|---|
[SerializeField] Texture2D icon; |
✅ Yes |
Resources.Load<AudioClip>("click") |
❌ No |
AssetBundle.LoadAsset<GameObject>("Prefab") |
❌ No |
Addressables.LoadAssetAsync<Sprite>("star") |
❌ No |
| String-based runtime path at runtime | ❌ No |
For projects using Addressables or AssetBundles, dependency chains shown in BuildLens may be incomplete. Assets still appear in the treemap and asset list because BuildReport captures all packed assets regardless of reference type; only the edges are missing.
Assembly-to-assembly dependencies (e.g. Assembly-CSharp.dll → Unity.InputSystem.dll) are tracked. Individual C# type or method references within an assembly are not.
Shader variants are packed as separate BuildReport entries. BuildLens shows each as an individual node but does not expose keyword combinations or variant counts.
The dependency scan reads AssetDatabase state at the moment analysis runs. If assets were modified or deleted between the build and the analysis, dependency results may not match the built content. Run analysis immediately after a build for best accuracy.
BuildReport provides packedSize (compressed) but not reliable uncompressed sizes for all types. Mesh, Script, Shader, AnimationClip, Font, ScriptableObject, and Other assets use platform-specific estimation ratios. Texture and Audio uncompressed sizes are typically accurate.
Nodes using estimates are flagged isUncompressedEstimated: true in the internal .blsnapshot schema.
BuildLens reads Library/LastBuild.buildreport. Only a completed player build produces this file. Play Mode, script-only compilation, and Editor builds do not.
Unity stores only the most recent LastBuild.buildreport. BuildLens preserves history via snapshots. If you run a new build before analysing the previous one, the previous report is overwritten by Unity — the snapshot for that build will not be available.
Recommendation: run analysis after every build before starting the next.
The treemap renders all assets in a fixed viewport. For projects exceeding 5 000 packed assets a summary view is shown. There is no zoom-in or pan in v1.0.0.
When the filtered set exceeds 200, only the top 200 by the active sort mode are shown. The treemap is not capped.
Transitive lists are capped at 200 entries per column to prevent IMGUI performance degradation.
Deleting a snapshot from the History panel is immediate and permanent.
BuildLens v1.0.0 uses Unity's IMGUI system. IMGUI does not support GPU-accelerated rendering for the treemap, sub-pixel antialiasing on rectangle borders, or smooth animations. Migration to UI Toolkit is planned for a future major version.
Only one analysis can run at a time. There is no cancel operation — a running analysis runs to completion or failure.
AssetDatabase.GetDependencies() runs on the main thread for Unity 2019.4 / 2020.x compatibility. On large projects (3 000+ assets) this can block the Editor UI for 20–60 seconds. Background-thread execution for Unity 2021.2+ is planned.
BuildLensData/ is machine-local. To share history across a team, commit it to version control.
The diff compares asset presence and size only. Changes to dependency edge structure between two snapshots are not surfaced.
The CSV export includes dependency_count / dependent_count but not the GUID arrays. Use the JSON export (schema v1.1) for full dependency data.
PDF export is not available in v1.0.0.
| Feature | Status |
|---|---|
| Shader variant keyword breakdown | Planned |
| Budget threshold configuration with CI exit codes | Planned |
| Addressables group and bundle view | Planned |
| Shared / remote snapshot storage | Planned |
| Dependency structure diff between snapshots | Planned |
| UI Toolkit migration (zoom, pan, GPU rendering) | Planned |
| PDF report export | Planned |
| Soft reference detection via static analysis | Under investigation |
| Background-thread AssetDatabase scan (Unity 2021.2+) | Planned |
Feature requests: Discord · Bug reports