logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class AchievementsStudioCatalog

    Every achievement the Studio knows about: read from the project, judged against the shared authoring rules, and narrowed to what the toolbar is currently asking for.

    Inheritance
    object
    AchievementsStudioCatalog
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    Namespace: Serenity.Achievements.Infrastructure.Editor.Studio
    Assembly: Serenity.UnityAchievements.Infrastructure.Editor.dll
    Syntax
    public sealed class AchievementsStudioCatalog
    Remarks

    A collaborator rather than a block of fields on the window, because this is the one part of the Studio that talks to the project — and the one part that has to survive the project talking back. Reading walks every achievement asset and every settings asset, judging walks an authored [SerializeReference] graph per achievement, and any of it can throw on a corrupted or half-imported asset.

    Neither Read(string, AchievementsStudioFilterKind) nor Rejudge(string, AchievementsStudioFilterKind) lets that reach the window. An exception out of the first read would leave a window that never finished opening; out of a projectChanged callback it would be blamed on whatever asset operation happened to fire it. Both fail to an empty list plus CouldNotBeRead, which the window turns into a message the author can act on.

    Constructors

    AchievementsStudioCatalog()

    Declaration
    public AchievementsStudioCatalog()

    Properties

    CouldNotBeRead

    Declaration
    public bool CouldNotBeRead { get; }
    Property Value
    Type Description
    bool

    Whether the last read or re-judge gave up, having said why in the Console.

    Definitions

    Declaration
    public IReadOnlyList<UnityAchievementDefinition> Definitions { get; }
    Property Value
    Type Description
    IReadOnlyList<UnityAchievementDefinition>

    Every achievement asset the last read found.

    EnabledPlatforms

    Declaration
    public IReadOnlyCollection<AchievementPlatformKind> EnabledPlatforms { get; }
    Property Value
    Type Description
    IReadOnlyCollection<AchievementPlatformKind>

    The storefronts the project ships on, resolved once per read.

    HasSettingsAsset

    Declaration
    public bool HasSettingsAsset { get; }
    Property Value
    Type Description
    bool

    Whether anything installs the achievements module at runtime.

    Rows

    Declaration
    public IReadOnlyList<AchievementsStudioRowModel> Rows { get; }
    Property Value
    Type Description
    IReadOnlyList<AchievementsStudioRowModel>

    One row per achievement, in project order.

    SettingsAssets

    Declaration
    public IReadOnlyList<UnityAchievementSettings> SettingsAssets { get; }
    Property Value
    Type Description
    IReadOnlyList<UnityAchievementSettings>

    Every achievement settings asset the last read found.

    UnjudgedCount

    Declaration
    public int UnjudgedCount { get; }
    Property Value
    Type Description
    int

    How many achievements defeated the authoring rules entirely.

    VisibleRows

    Declaration
    public IReadOnlyList<AchievementsStudioRowModel> VisibleRows { get; }
    Property Value
    Type Description
    IReadOnlyList<AchievementsStudioRowModel>

    The rows that survive the current search and category.

    Methods

    CountWith(AuthoringSeverity)

    How many achievements in the project carry a finding of exactly this severity.

    Declaration
    public int CountWith(AuthoringSeverity severity)
    Parameters
    Type Name Description
    AuthoringSeverity severity

    The severity to count.

    Returns
    Type Description
    int

    The count.

    Narrow(string, AchievementsStudioFilterKind)

    Narrows the visible rows to what the toolbar asks for.

    Declaration
    public void Narrow(string search, AchievementsStudioFilterKind filter)
    Parameters
    Type Name Description
    string search

    What the search field currently holds.

    AchievementsStudioFilterKind filter

    The category currently picked.

    Read(string, AchievementsStudioFilterKind)

    Re-reads the whole project and judges everything in it.

    Declaration
    public void Read(string search, AchievementsStudioFilterKind filter)
    Parameters
    Type Name Description
    string search

    What the search field currently holds.

    AchievementsStudioFilterKind filter

    The category currently picked.

    Remarks

    The storefront scan and the authoring rules both walk the project, so both are paid for here — once per read — rather than per row or per repaint. That is what the creator's Validate(input, enabledPlatforms) overload and AchievementAuthoringJudge's single pass exist for.

    Rejudge(string, AchievementsStudioFilterKind)

    Judges the achievements already loaded, without re-reading the project.

    Declaration
    public void Rejudge(string search, AchievementsStudioFilterKind filter)
    Parameters
    Type Name Description
    string search

    What the search field currently holds.

    AchievementsStudioFilterKind filter

    The category currently picked.

    Remarks

    What an edit in the detail pane can change: an id, a badge, a finding. What it cannot: which assets exist. So the rows are rebuilt and the asset search is not.

    In this article
    © 2026 Serenity. All Rights Reserved