Skip to main content
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

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 updatesSequenceController.OnSequenceStart must fire; ensure activity.IsActive() during Update for time-based activity scoring.

Unity Editor

ScenarioActivity root with ActivityScoring component visible.

ActivityScoring in Unity Inspector