logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Namespace Serenity.Score.Infrastructure.Editor.Builder

    Classes

    CreateScoreSettingsWindow

    Step-by-step window for creating (or updating) the project-wide UnityScoreSettings asset: choose the output folder, the asset name and the Id, author the metric rows through the exact same table the inspector shows (ScoreMetricsTableGui), and optionally wire the "InstallScore" pipeline task. The stepped-wizard scaffolding — the header and breadcrumb, the body scroll, the footer and its error gate, and the select-and-ping a finished run ends with — comes from Serenity.Global.Infrastructure.Editor.SerenityStepWizardWindow`1; this window declares only its own step table and what the primary action does. The window only collects input and renders results, ScoreSettingsCreator does the actual validation and generation work.

    Get-or-create target resolution goes through Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAsset and Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAssetGui: picking (or being auto-handed, when exactly one already exists) an existing UnityScoreSettings asset disables the folder/name fields and switches the metrics table to editing that asset's rows directly — the same live undo/dirty flow the inspector itself uses, not a scratch copy — because Score has no multi-tab editing surface that would make a partial in-place edit unsafe to leave uncommitted.

    ScoreKeyFieldGui

    Renders a score-metric-key field as a pick-from-what-exists control instead of a bare text field: a popup over DiscoverKeys() with a manual entry underneath for keys the scan cannot see. Shared by the leaderboard wizard, the achievements wizard and the achievements condition drawer, so every field asking for a score key offers the same choices.

    ScoreKeyOptionProvider

    Discovers score metric keys already known to the project, so any module wizard can offer them as a dropdown instead of asking the designer to remember and retype a raw string. Unions two sources: the literal new ScoreKey("...") construction pattern (the only shape the codebase's own IScoreService.Register call sites use) found by scanning C# source, and the declaratively- authored Key rows on every UnityScoreSettings asset in the project. A key registered any other way (e.g. built from a variable, or from a settings asset the scan cannot find) is invisible to this scan, hence the "may be incomplete" framing wherever this list is shown.

    ScoreModuleWiring

    The UnitySerenityInstaller method the Score module boots through, shared between CreateScoreSettingsWindow and UnityScoreSettingsEditor so the two tools can never disagree about which task installs the module — the same precedent as Serenity.Achievements.Infrastructure.Editor.Builder.AchievementModuleWiring.InstallMethodName.

    ScoreSettingsCreator

    Generates (or updates) the project-wide UnityScoreSettings asset from a single description. Runs on SingletonSettingsCreationEngine<TSettings, TInput, TResult>: this class stays the caller-facing static surface — Input/Result DTOs, Validate/ValidateIdentity/Create — and forwards every member to one ScoreSettingsCreator.Engine instance that supplies the module's own fields. CreateScoreSettingsWindow only collects input and renders results; every asset mutation lives in the engine.

    ScoreSettingsCreator.Input

    Everything needed to create or update the settings asset.

    ScoreSettingsCreator.Result

    Outcome of a Create(Input) call.

    Enums

    CreateScoreSettingsWindow.WizardStep

    Public rather than private because C# requires a class's base type to be at least as accessible as the class itself, and this enum is that base type's argument.

    In this article
    © 2026 Serenity. All Rights Reserved