SimpleBPInheritFix User Manual
Complete English product manual for SimpleBPInheritFix
Supported Unreal Engine versions: 5.2–5.8
Fix component pollution in Actor Blueprint inheritance chains with one click.
⚠️ This plugin modifies multiple Blueprints in the inheritance chain. Changes are conservative, but check that automatically checked-out files match expectations before submitting to version control.
📝 How to Use
Section titled “📝 How to Use”- Install the plugin and compile successfully
- In the Content Browser, right-click any affected Actor Blueprint, whether ancestor, self, or descendant
- Select Component Repair → Fix Inheritance Pollution
- Open the Output Log and filter
LogSBIFto monitor execution - The editor shows a save dialog — save the Blueprints marked dirty to finish
❓ Frequently Asked Questions
Section titled “❓ Frequently Asked Questions”The scan returns 0 findings despite visible corruption?
You may have a problem outside this plugin’s scope (rare). Paste the complete LogSBIF log for diagnosis.
What if CheckOut fails?
The plugin continues repairing in memory, but you must resolve checkout manually before saving (p4 edit / git lfs lock / svn lock). Common causes include another user’s lock, an unreachable server, or a mapping that excludes the file.
Which Blueprint should be the anchor?
Choose any — ancestors, self, and descendants are scanned, yielding the same result.
Can I use it without Perforce?
- Git: CheckOut is effectively a no-op; files are writable by default
- Git LFS: Sends an LFS lock request
- SVN: Runs
svn lock - No version control: Skips the CheckOut stage
⚠️ Limitations
Section titled “⚠️ Limitations”- Handles only the specific component pollution covered by this plugin; other Blueprint issues are outside its scope
- Does not scan components created dynamically in Construction Script
Version History
Section titled “Version History”Open Edit → Project Settings, go to SimpleBPInheritFix settings, and set Language to English or Chinese. English is the default. User-facing interfaces, prompts, notifications, and functional logs update immediately without restarting the editor; public API names and module startup/shutdown logs always remain in English.
Contact
Section titled “Contact”For usage questions or collaboration inquiries, visit the contact page.
- Contact: Contact and Collaboration
Supplementary Usage Instructions
Section titled “Supplementary Usage Instructions”SimpleBPInheritFix User Guide
Section titled “SimpleBPInheritFix User Guide”SimpleBPInheritFix handles specific component-state anomalies in Actor Blueprint inheritance chains.
See the SimpleBPInheritFix work page for its purpose and use cases.
Component Anomalies to Check
Link to “Component Anomalies to Check” sectionActor Blueprint inheritance can exhibit these component anomalies:
- Cut / Delete is disabled in the parent Blueprint even though the component belongs to that parent.
- A child Blueprint’s property changes write back to the parent: Even toggling a bool can affect the parent template rather than creating an isolated child override.
Why Component Templates Become Abnormal
Link to “Why Component Templates Become Abnormal” section1.1 Root Cause
Link to “1.1 Root Cause” sectionUE’s UActorComponent records how a component was created in CreationMethod:
| Value | Meaning |
|---|---|
Native | Created in a C++ constructor |
SimpleConstructionScript | Added through the Blueprint editor’s Components panel; the normal Blueprint component case |
UserConstructionScript | Created dynamically in ConstructionScript nodes |
Instance | Added to a particular Actor instance; it should not describe these Blueprint component templates |
The anomaly examined here occurs when a component template’s CreationMethod is incorrectly set to Instance. The editor no longer treats it as a component defined by the Blueprint. Cut / Delete follows a different branch and becomes disabled; child property changes are treated as instance changes and written to the parent template rather than producing a child override.
1.2 What Triggers It
Link to “1.2 What Triggers It” sectionThe triggering operations have not formed a stable reproduction path. Similar symptoms alone cannot establish the cause; check the component template’s CreationMethod. Once present, the anomaly may persist and does not repair itself when saved.
1.3 Why Manual Repair Is Difficult
Link to “1.3 Why Manual Repair Is Difficult” sectionRepair restores abnormal CreationMethod values to SimpleConstructionScript, but several locations need checking:
- Components can appear in both SCS nodes and ICH records; both locations need attention.
- Multiple Blueprints in the inheritance chain may be affected; changing one may be insufficient.
- Descendant Blueprints may also be affected.
- Source-controlled files can be read-only and need individual checkout.
The property panel cannot edit this field directly. Scripted repair requires knowing where Blueprint component records are stored.
Procedure
Section titled “Steps”- Install the plugin and compile successfully
- Right-click any affected Actor Blueprint in the Content Browser
- Select Component Repair → Fix Inheritance Pollution
- Open the Output Log, filter
LogSBIF, and review execution - When the editor shows the save dialog, save the Blueprints marked dirty to finish
Scanning Inheritance Chains and Component Records
Link to “Scanning Inheritance Chains and Component Records” sectionInheritance Chain Scan Scope
Link to “Inheritance Chain Scan Scope” sectionCollect Blueprints in both directions:
- Upward: Follow
ParentClassfrom the anchor Blueprint to gather its Blueprint ancestors. - Downward: Use UE’s
AssetRegistry.GetDerivedClassNames()to gather derived Blueprint classes.
Merge and deduplicate the sets to establish the inheritance range to inspect.
Component Records in SCS and ICH
Link to “Component Records in SCS and ICH” sectionInherited component information appears in two locations, both of which must be checked:
- SCS nodes (
SimpleConstructionScript.AllNodes): Components defined directly by the Blueprint. - ICH records (
InheritableComponentHandler.CreateRecordIterator()): Child overrides of components inherited from a parent.
Scan both locations for each Blueprint to find records with CreationMethod == Instance.
Repair Stages
Link to “Repair Stages” sectionCollect the inheritance chain and identify affected components before checkout, field updates, and saving.
| Stage | Action |
|---|---|
| 1. GatherChain | Collect parents, the current Blueprint, and descendants |
| 2. ScanChain | Scan each Blueprint’s SCS and ICH for CreationMethod=Instance records |
| 3. CheckOutFindings | Check out the affected uasset files through source control |
| 4. ApplyFindings | Change CreationMethod from Instance to SimpleConstructionScript |
| 5. MarkDirty | Mark changed Blueprints dirty and prompt the user to save manually |
A complete log looks roughly like this:
[SBIF] ==============================================[SBIF] Fix Inheritance Pollution started (anchor: BP_MyActor)[SBIF] ==============================================[SBIF] -------- Stage 1 / Gather Inheritance Chain --------[SBIF] Self: BP_MyActor[SBIF] Ancestor: BP_BaseActor[SBIF] Descendant: BP_MyActorExt[SBIF] Total 3 blueprints (ancestors+self 2 / descendants 1)[SBIF] -------- Stage 2 / Scan Instance-corrupted Nodes --------[SBIF] [BP_BaseActor / SCS] 'MeshComp' (Template=MeshComp_GEN_VARIABLE)[SBIF] Scan complete: 1 Instance-corrupted nodes total[SBIF] -------- Stage 3 / SourceControl CheckOut --------[SBIF] ✅ [BP_BaseActor] /Content/BP_BaseActor.uasset[SBIF] -------- Stage 4 / Repair CreationMethod --------[SBIF] [BP_BaseActor / SCS] 'MeshComp' Instance -> SimpleConstructionScript[SBIF] -------- Stage 5 / Mark Blueprints Dirty --------[SBIF] Dirty: BP_BaseActor[SBIF] 1 blueprints marked dirty, manual save requiredFrequently Asked Questions
Section titled “Frequently Asked Questions”The Scan Finds 0 Items Despite Pollution?
Section titled “The Scan Finds 0 Items Despite Pollution?”When the scan returns 0, use the LogSBIF log to determine whether this is the component-state anomaly handled by this tool.
What If CheckOut Fails?
Section titled “What If CheckOut Fails?”The plugin still completes in-memory repair, but checkout must be resolved manually before saving. Common causes:
- The file is locked by another user
- The source control server is unreachable
- Workspace mapping does not include the file
Resolve checkout manually first, then return to UE and save.
Could It Damage Normal Components?
Section titled “Could It Damage Normal Components?”The repair scope is only the CreationMethod field (Instance → SimpleConstructionScript); no other properties are changed. Check the component state of affected Blueprints before saving.
Does Choosing the Wrong Anchor Matter?
Section titled “Does Choosing the Wrong Anchor Matter?”The entry Blueprint locates the inheritance chain; scanning covers ancestors, the current Blueprint, and descendants.
Does It Work without Perforce?
Section titled “Does It Work without Perforce?”- Git: Checkout is essentially a no-op because files are already writable
- Git LFS: Automatically requests an LFS lock
- SVN: Runs
svn lock - No source control: Skips checkout entirely and proceeds to repair
This concerns CreationMethod anomalies in Actor Blueprint component templates, not every Blueprint fault. Components created dynamically in Construction Script need separate assessment; the same repair rules cannot be applied automatically.
- Handles only the component anomaly covered by this plugin (
CreationMethod=Instancepollution); other Blueprint issues are outside its scope - Dynamically created Construction Script components are not scanned because they do not use SCS/ICH
- Supports only Actor Blueprints; non-Actor Blueprints do not have this issue