Description

Any change to the setting for the variable bStartWithTickEnabled in a skeletal mesh component is not registered. The component will tick even when the variable is set to false.

Setting bStartWithTickEnabled on an Actor Component works as expected (Does not tick until explicitly told to)

Steps to Reproduce
  1. Open UE4 Editor (any project)
  2. Add code based on SkeletalMeshComponent (MySkeletalMeshComponent)
  3. Add the following to the header (.h) file below GENERATED_BODY():
    UMySkeletalMeshComponent();
    	
    virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override;
    
  4. Add the following to the source (.cpp) file below include statement:
    #include "Engine.h"
    #define DebugText(text) if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 1.5, FColor::White,text)
    
    
    UMySkeletalMeshComponent::UMySkeletalMeshComponent()
    {
    	PrimaryComponentTick.bStartWithTickEnabled = false;
    }
    
    void UMySkeletalMeshComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
    {
    	Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
    	DebugText("RandomText");
    }
    
  5. Compile
  6. In the editor, create blueprint based on actor
  7. Add instance of MySkeletalMeshComponent to the blueprint
  8. Compile the blueprint and add instance to the viewport
  9. PIE

Result:
The "RandomText" appears in the viewport after adding the instance and appears in PIE even though the skeletal mesh component should need its tick enabled before Tick occurs

Expected:
When bStartWithTickEnabled is false, component doesn't tick until EnableTick() is called

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-47203 in the post.

7
Login to Vote

Won't Fix
ComponentUE - Gameplay - Components
Affects Versions4.16.2
CreatedJul 13, 2017
ResolvedAug 18, 2021
UpdatedAug 18, 2021