> ## Documentation Index
> Fetch the complete documentation index at: https://docs-unity.molca.id/llms.txt
> Use this file to discover all available pages before exploring further.

# ActivityScoring

> Activity-level score aggregation with its own ScoringConfig.

**File:** `Assets/_MolcaSDK/_VR/Scripts/Scenario/Scoring/ActivityScoring.cs`

## Role

**`[RequireComponent(typeof(ScenarioActivity))]`** — **`ActivityScoring`** lives on the activity root. **`activityScoringConfig`** can contribute a **base** score (including time-based while the activity runs). With **`includeStepScores`**, it collects every **`StepScoringAuxiliary`** under **`SequenceController.Steps`** and combines them via **`ScoreAggregationMode`** (**Sum**, **Average**, **Maximum**, **Minimum**). Exposes **`OnScoreChanged`**, **`OnScoreFinalized`**, **`FinalizeScore()`**, **`GetScorePercentage()`**, **`GetNormalizedScore()`**, **`GetMaxPossibleScore()`**.

## Code

```csharp theme={null}
using MolcaSDK.VR.Scenario.Scoring;
using UnityEngine;

public class ActivityScoreHud : MonoBehaviour
{
    [SerializeField] private ActivityScoring activity;

    private void OnEnable()
    {
        activity.OnScoreChanged += Refresh;
        activity.OnScoreFinalized += Lock;
    }

    private void OnDisable()
    {
        activity.OnScoreChanged -= Refresh;
        activity.OnScoreFinalized -= Lock;
    }

    private void Refresh(float total) { /* TotalScore */ }
    private void Lock(float total) { }
}
```

## Troubleshooting

* **Step scores missing** — Steps must be registered on **`SequenceController.Steps`** and carry **`StepScoringAuxiliary`**; collection runs on **`OnActivityStarted`**.
* **Totals look wrong** — Match **`aggregationMode`** to design (**Sum** vs **Average**); activity **base** score still adds on top when non-**None** config.
* **No updates** — **`SequenceController.OnSequenceStart`** must fire; ensure **`activity.IsActive()`** during **`Update`** for time-based **activity** scoring.

## Related

* [ScenarioActivity](/vr/scenario-activity)
* [Step scoring auxiliary](/vr/scoring/step-scoring-auxiliary)
* [ScoringConfig](/vr/scoring/scoring-config)

## Unity Editor

<Frame hint="ScenarioActivity root with ActivityScoring component visible." caption="ActivityScoring Inspector">
  <img src="https://mintlify.s3.us-west-1.amazonaws.com/ptmolcateknologinusantara/images/features/vr/scoring/activity-scoring-inspector.png" alt="ActivityScoring in Unity Inspector" />
</Frame>
