Skip to main content
File: Assets/_MolcaSDK/_VR/Scripts/Scenario/Scoring/ScenarioScoring.cs

Role

[RequireComponent(typeof(ScenarioManager))]scenarioScoringConfig can add a scenario base score (time-aware while CurrentState == Active). includeActivityScores merges each child ActivityScoring using ScoreAggregationMode. Subscribes to OnScenarioStart, Complete, Timeout, Fail; finalize runs on end conditions. showScoreBreakdown logs GetScoreBreakdown() to the console.

Code

using MolcaSDK.VR.Scenario.Scoring;
using UnityEngine;

public class ScenarioScorePanel : MonoBehaviour
{
    [SerializeField] private ScenarioScoring scoring;

    private void OnEnable()
    {
        scoring.OnScoreChanged += UpdateUi;
        scoring.OnScoreFinalized += ShowFinal;
    }

    private void OnDisable()
    {
        scoring.OnScoreChanged -= UpdateUi;
        scoring.OnScoreFinalized -= ShowFinal;
    }

    private void UpdateUi(float total) { }

    private void ShowFinal(float total)
    {
        var breakdown = scoring.GetScoreBreakdown();
        // breakdown.ActivityBreakdowns, ScorePercentage, etc.
    }
}

Troubleshooting

  • Activity map emptyscenarioManager.Activities must list ScenarioActivity objects that include ActivityScoring; CollectActivityScoring runs on start and scenario start.
  • Final score never locks — Ensure ScenarioManager fires OnScenarioComplete / Timeout / Fail; otherwise call FinalizeScore() yourself for custom endings.
  • ActivityScores missing an activity — Component must sit on the same object as ScenarioManager; activities need ActivityScoring attached.

Unity Editor

Scenario root or manager sibling with ScenarioScoring.

ScenarioScoring in Unity Inspector