Skip to content

12. FAQ & Troubleshooting

← Previous: Showcase Scene | Back to Overview →


General Questions

Does FuzzyOptimizer modify my raw source asset files?

No. Automated import fixes modify only Unity’s asset importer settings stored within corresponding .meta files. Source PNG, TGA, FBX, OBJ, and WAV files remain completely untouched on disk. Texture resolution clamps and compression formats apply strictly as overrides for the active build target platform. Furthermore, optimization tools save all newly generated meshes and materials to Assets/FuzzyOptimizer_Generated/ while merely disabling source renderers.

Can every optimization change be undone?

Yes. Every single batch operation—whether executed via an individual fix, a rule group, the One-Click pipeline, or a specialized tool—is committed as a journaled session in History. You can roll back sessions at any time, even after restarting the Unity Editor. See History & Revert for technical details and the few irreversible exceptions (e.g. missing script removal).

Is the Built-in Render Pipeline fully supported?

Yes. While modern development leans heavily toward the Universal Render Pipeline (URP), FuzzyOptimizer fully supports Built-in. The synchronized texture atlas packer natively handles Built-in Standard shaders, and pipeline-aware rules automatically inspect Quality Settings rather than URP pipeline assets.

Does FuzzyOptimizer introduce runtime code or overhead into my builds?

Only the specific runtime components you deliberately choose to add to your scenes. Components like ZeroAllocPoolManager, GlobalVFXBudgetLimiter, and LayerDistanceCuller reside in the runtime assembly (FuzzyOptimizer.Runtime). All diagnostic rules, Scene Doctor heuristics, mesh combiners, and dashboard interfaces live strictly in editor assemblies (FuzzyOptimizer.Editor) and are completely excluded from final player builds.


Scores & Diagnostic Numbers

Why do dashboard metrics differ slightly from the Unity Stats window?

Dashboard numbers are calculated via edit-mode frustum estimation from the perspective of the MainCamera. This ensures metrics remain consistent, deterministic, and comparable between successive scans without relying on variable GPU refresh rates or editor viewport resolution changes. For physical, microsecond-accurate runtime frame times, utilize the automated Optimize & Measure FPS Play Mode benchmark.

The dashboard reports “No main camera found”.

Tag your primary scene camera with the native Unity tag MainCamera. Camera-based metric calculations, frustum evaluations, and culling rules require a reference camera.

The Health Score changed very little after fixing dozens of issues.

Health score penalties are capped at a maximum of $-20$ points per category to prevent a single noisy rule from drowning out other subsystems. Conversely, platform budget overruns (excessive draw calls, dense polygon counts, and VRAM bloat) contribute up to $-75$ penalty points. If your score remains low, your scene is significantly exceeding platform hardware budgets: utilize Mesh Combining, Burst LOD Generation, Culling, or Texture Clamps to resolve the budget overruns.


Fixes & Optimization Tools

A fix broke a C# script that reads raw mesh or texture data at runtime.

If your gameplay code accesses Mesh.vertices or calls Texture2D.GetPixels(), those specific assets require CPU Read/Write flags to remain enabled. Simply open Scene Doctor ⋯ > History, revert the changes for that rule, and add an Ignore entry for that specific asset. When using One-Click Optimize, toggle off Step 12: Mesh and texture memory flags.

Combined objects appear frozen when moving.

The Smart Mesh Combiner is designed exclusively for static, non-moving environment geometry. If dynamic objects (bearing scripts or physics bodies) are merged into a combined mesh, they can no longer move independently. Ensure Include Non-Static is unchecked. To recover the objects, select the combined root and click Revert on its CombinedMeshGroup component.

Why were some materials excluded from the texture atlas?

Materials utilizing tiled UV coordinates (UV coordinates extending outside the 0–1 coordinate space), transparent blending, or alpha-tested cutouts are intentionally excluded from atlasing. They automatically retain their original materials and submeshes to prevent visual tiling artifacts.

My background occlusion culling bake was interrupted.

Entering Play Mode in the Unity Editor automatically aborts any active occlusion culling bake. When using Optimize & Measure FPS, the benchmark handles this by waiting for the bake to complete before entering Play Mode. If you started a bake manually, allow it to finish before entering Play Mode.

Generated assets are accumulating in the project.

Navigate to Assets > Fuzzy Logic Labs > FuzzyOptimizer > Clean Up Unused Generated Assets. The utility scans your project and safely trashes any generated mesh, texture, or material no longer referenced by active scenes or prefabs.


Continuous Integration & CLI

The CLI command exits with code 2.

Exit code 2 denotes an argument syntax error or an unhandled exception. Verify that your -fuzzyProfile matches a recognized platform (Mobile, StandaloneVR, DesktopMid, DesktopHigh, Custom). Check the generated editor log for lines starting with [FuzzyOptimizer CLI].

The CLI audit reports 0 scenes inspected.

When passing -fuzzyScenes build (the default mode), FuzzyOptimizer audits only scenes that are actively checked and enabled in Unity’s Build Settings. Either ensure your scenes are added to Build Settings, or pass -fuzzyScenes all or an explicit list of paths (-fuzzyScenes "Assets/Scenes/Level1.unity;Assets/Scenes/Level2.unity").


Customer Support & Community

If you encounter unexpected behavior or need assistance with complex scene configurations, our support team is here to help:

When submitting a support ticket, please include:

  1. Unity editor version and active render pipeline (URP or Built-in).
  2. The self-contained report.html generated via Scene Doctor ⋯ > Export Report.
  3. Any console warnings or errors prefixed with [FuzzyOptimizer].