Reference

Issue type reference

Every issue RefSafe Pro reports carries one of the types below, exposed in the API as IssueType. Default severities come from each rule’s [ValidationRule] attribute and can be overridden per rule in Settings.

RuleDefault severityOn by default
Missing ScriptCriticalYes
Missing PrefabCriticalYes
Missing ReferenceWarningYes
Broken UnityEventWarningYes
Broken AddressableWarningYes
Duplicate ComponentWarningYes
Invalid LayerWarningYes
Invalid MaterialWarningYes
Shader ErrorWarningYes
Huge PositionInfoNo
Prefab Variant OverrideInfoNo

Two rules ship disabled because they flag patterns that are often intentional. Enable them when you want the stricter pass.

MissingScript

Critical. A MonoBehaviour script referenced by this GameObject no longer exists — usually because a script file was deleted or renamed without the scene or prefab being updated.

This is the classic “Missing (Mono Script)” slot in the Inspector. The component’s serialized data is still on the object but nothing can read it.

Fix: remove the missing component, or restore the original script. RefSafe’s automatic fix removes the component.

MissingReference

Warning. A serialized field references an object that can no longer be found. The field held a valid assignment, but the target asset was deleted or moved.

Insidious because the field renders as None in the Inspector — indistinguishable from a field that was never assigned. Nothing errors until something dereferences it at runtime.

Fix: reassign the field to a valid asset, or clear it. Use Replace with… to pick a replacement from ranked suggestions rather than blanking it.

UnusedAsset

Info. The asset isn’t referenced by any other asset in the project.

Reported by the Cleaner rather than a scan rule. Verify before deleting — RefSafe sees static references, so anything loaded through Resources.Load, Addressables, or by name from code will look unused when it isn’t.

Fix: delete the asset if genuinely unused, or add it to the Cleaner’s protected list.

DuplicateComponent

Warning. The GameObject carries multiple instances of the same component type.

Occasionally intentional — several AudioSource components on one object is a real pattern — but usually a mistake from a duplicated paste, and it causes behavior that’s hard to trace.

Fix: remove the duplicate, keeping the one with correct settings. The automatic fix keeps the first instance.

BrokenUnityEvent

Warning. A UnityEvent — a Button.onClick handler, typically — references a target object or method that no longer exists.

The event fails silently at runtime. The button clicks, nothing happens, no error. This is among the most common causes of “it worked yesterday.”

Fix: reassign the event target and method, or remove the broken listener.

InvalidLayer

Warning. The GameObject is assigned to a layer index with no name defined in the Tag Manager.

Breaks physics layer collision, camera culling masks, and any layer-based logic — quietly, because an unnamed layer is still a valid integer.

Fix: assign the object to a valid named layer, or define a name for that layer index.

InvalidMaterial

Warning. A Renderer has a null material, or one whose shader failed to compile.

Renders magenta at runtime.

Fix: assign a valid material with a working shader.

ShaderError

Warning. The material’s shader has compilation errors. Objects using it render magenta in builds.

Fix: fix the shader errors, or assign a different shader.

HugePosition

Info, disabled by default. A Transform has a position or scale value beyond 100,000 on some axis.

Large coordinates cause floating-point precision loss, physics instability, and rendering artifacts. Often the signature of an object accidentally dragged into the far distance.

Off by default because some projects legitimately use large world coordinates.

Fix: move the object closer to the origin, or reduce the scale.

MissingPrefab

Critical. The GameObject is a prefab instance whose source prefab asset no longer exists. The instance is disconnected and can’t receive prefab updates.

Fix: reconnect it to the correct prefab, or unpack the instance to make it a plain GameObject.

DeletedBuildScene

Critical. Build Settings references a scene file that no longer exists on disk.

Breaks the build, or produces a build with a scene index that loads nothing.

Fix: remove the deleted scene from File → Build Settings. RefSafe’s automatic fix does this.

BrokenAddressable

Warning. An Addressable AssetReference field holds a GUID that doesn’t resolve to any asset, or an Addressables group contains an entry pointing at a file that no longer exists.

Loading the reference at runtime fails. Because Addressables load asynchronously and often swallow failures into a result status nobody checks, this frequently surfaces as content that silently never appears.

Detection uses reflection, so it degrades safely when the Addressables package isn’t installed.

Fix: reassign the AssetReference, or remove the orphaned group entry.

PrefabVariantOverride

Info, disabled by default. A prefab variant has removed a component that exists on its base prefab.

Sometimes deliberate — a variant with no collider is a normal thing to build — but often refactor drift nobody noticed. Off by default for exactly that reason.

Fix: revert the override in the Prefab Inspector if the component should stay, or document the removal as intentional and ignore the issue with a note.

RuleFault

Info. A custom validation rule, fixer, or exporter threw an exception while RefSafe was running it.

Not a problem with your project — a problem with a plugin. RefSafe catches the failure so the rest of the scan completes rather than letting one bad rule kill the run.

Fix: check the Unity console for the stack trace, then fix or disable the plugin that produced it. See extending RefSafe Pro.