logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class AchievementPlatformTableGui

    The Studio's Platform Ids tab: every achievement down the side, every storefront across the top, each identifier editable in place — plus the export that turns the whole table into the manifest a storefront's bulk importer reads.

    Inheritance
    object
    AchievementPlatformTableGui
    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 AchievementPlatformTableGui
    Remarks

    This tab exists because the identifiers are the one part of an achievement that is never authored one at a time. A storefront's dashboard hands over a list of API names in one sitting, and typing them into two hundred inspectors one field at a time is how three of them end up transposed. A grid is also the only shape in which "which of these has no Xbox id yet" is a glance rather than a search.

    Every cell writes through the achievement's own UnityEditor.SerializedObject, so undo, dirtying and the deferred save behave exactly as they do in the detail pane and in the inspector — this tab is a second view of those fields, never a second writer of them.

    [Serializable] because the chosen manifest format and the scroll position have to survive the domain reload a script compile causes; the serialized objects behind the cells deliberately do not, and are rebuilt whenever the set of achievements changes underneath them.

    Constructors

    AchievementPlatformTableGui()

    Declaration
    public AchievementPlatformTableGui()

    Fields

    AchievementColumnHeader

    The heading of the column naming each achievement.

    Declaration
    public const string AchievementColumnHeader = "Achievement"
    Field Value
    Type Description
    string

    ExportButtonLabel

    The button that writes a manifest.

    Declaration
    public const string ExportButtonLabel = "Export manifest…"
    Field Value
    Type Description
    string

    FillSteamNamesButtonLabel

    The button that fills every blank Steam API name from its achievement's id.

    Declaration
    public const string FillSteamNamesButtonLabel = "Fill blank Steam names from Ids"
    Field Value
    Type Description
    string

    GradeColumnHeader

    The heading of the trophy-tier column.

    Declaration
    public const string GradeColumnHeader = "Grade"
    Field Value
    Type Description
    string

    NoAchievementsMessage

    What the tab says when the project has no achievements to tabulate.

    Declaration
    public const string NoAchievementsMessage = "This project has no achievement assets yet, so there are no identifiers to map. Author one on the Achievements tab first."
    Field Value
    Type Description
    string

    SyncButtonLabel

    The button that opens the Achievement Platform Sync wizard.

    Declaration
    public const string SyncButtonLabel = "Achievement Platform Sync…"
    Field Value
    Type Description
    string

    TableHeader

    The heading above the table.

    Declaration
    public const string TableHeader = "Storefront identifiers"
    Field Value
    Type Description
    string

    Methods

    Draw(IReadOnlyList<UnityAchievementDefinition>, IReadOnlyList<AchievementsStudioRowModel>, IReadOnlyCollection<AchievementPlatformKind>)

    Draws the whole tab and reports what the author did.

    Declaration
    public AchievementPlatformTableGui.Result Draw(IReadOnlyList<UnityAchievementDefinition> definitions, IReadOnlyList<AchievementsStudioRowModel> judgedRows, IReadOnlyCollection<AchievementPlatformKind> enabledPlatforms)
    Parameters
    Type Name Description
    IReadOnlyList<UnityAchievementDefinition> definitions

    Every achievement in the project. May be null and may contain null.

    IReadOnlyList<AchievementsStudioRowModel> judgedRows

    What the Studio's rules said about each of them, in the same order, so a broken achievement is kept out of every manifest. May be null.

    IReadOnlyCollection<AchievementPlatformKind> enabledPlatforms

    The storefronts the project ships on. May be null.

    Returns
    Type Description
    AchievementPlatformTableGui.Result

    What changed, and what to say about it.

    In this article
    © 2026 Serenity. All Rights Reserved