logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Class SerenityInstallableSystemAttribute

    Marks an Install*() method on the composition-root installer as one of the systems a "create a new game" flow can offer for selective installation. Declares the module label its installed system carries, the settings type a wizard resolves to configure it, the Hub tool id that authors that settings asset — by name only, never by Type, because the installer's assembly does not (and must not) reference every module's settings type — the tier that orders this system in the wizard's checklist, and the other attributed systems (by Install*() method name) this one depends on.

    Inheritance
    object
    Attribute
    SerenityInstallableSystemAttribute
    Implements
    _Attribute
    Inherited Members
    Attribute.GetCustomAttributes(MemberInfo, Type)
    Attribute.GetCustomAttributes(MemberInfo, Type, bool)
    Attribute.GetCustomAttributes(MemberInfo)
    Attribute.GetCustomAttributes(MemberInfo, bool)
    Attribute.IsDefined(MemberInfo, Type)
    Attribute.IsDefined(MemberInfo, Type, bool)
    Attribute.GetCustomAttribute(MemberInfo, Type)
    Attribute.GetCustomAttribute(MemberInfo, Type, bool)
    Attribute.GetCustomAttributes(ParameterInfo)
    Attribute.GetCustomAttributes(ParameterInfo, Type)
    Attribute.GetCustomAttributes(ParameterInfo, Type, bool)
    Attribute.GetCustomAttributes(ParameterInfo, bool)
    Attribute.IsDefined(ParameterInfo, Type)
    Attribute.IsDefined(ParameterInfo, Type, bool)
    Attribute.GetCustomAttribute(ParameterInfo, Type)
    Attribute.GetCustomAttribute(ParameterInfo, Type, bool)
    Attribute.GetCustomAttributes(Module, Type)
    Attribute.GetCustomAttributes(Module)
    Attribute.GetCustomAttributes(Module, bool)
    Attribute.GetCustomAttributes(Module, Type, bool)
    Attribute.IsDefined(Module, Type)
    Attribute.IsDefined(Module, Type, bool)
    Attribute.GetCustomAttribute(Module, Type)
    Attribute.GetCustomAttribute(Module, Type, bool)
    Attribute.GetCustomAttributes(Assembly, Type)
    Attribute.GetCustomAttributes(Assembly, Type, bool)
    Attribute.GetCustomAttributes(Assembly)
    Attribute.GetCustomAttributes(Assembly, bool)
    Attribute.IsDefined(Assembly, Type)
    Attribute.IsDefined(Assembly, Type, bool)
    Attribute.GetCustomAttribute(Assembly, Type)
    Attribute.GetCustomAttribute(Assembly, Type, bool)
    Attribute.Equals(object)
    Attribute.GetHashCode()
    Attribute.Match(object)
    Attribute.IsDefaultAttribute()
    Attribute.TypeId
    object.ToString()
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetType()
    Namespace: Serenity.Shared.Attributes
    Assembly: Serenity.Shared.dll
    Syntax
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = false)]
    public sealed class SerenityInstallableSystemAttribute : Attribute, _Attribute

    Constructors

    SerenityInstallableSystemAttribute(string, string, string, SerenityInstallableSystemTier, string, string[], bool, SerenityInstallableSystemSettingsCardinality, bool, string)

    Declaration
    public SerenityInstallableSystemAttribute(string moduleLabel, string settingsTypeName, string hubToolId, SerenityInstallableSystemTier tier, string displayName = null, string[] dependsOn = null, bool installsAtBootstrap = false, SerenityInstallableSystemSettingsCardinality settingsCardinality = SerenityInstallableSystemSettingsCardinality.Singleton, bool createsSettingsViaHubTool = true, string settingsFieldName = null)
    Parameters
    Type Name Description
    string moduleLabel
    string settingsTypeName
    string hubToolId
    SerenityInstallableSystemTier tier
    string displayName
    string[] dependsOn
    bool installsAtBootstrap
    SerenityInstallableSystemSettingsCardinality settingsCardinality
    bool createsSettingsViaHubTool
    string settingsFieldName

    Properties

    CreatesSettingsViaHubTool

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

    Whether following HubToolId reliably authors a SettingsTypeName asset. Defaults to true — declare false when the Hub tool's own primary output is something else and it only optionally, conditionally touches SettingsTypeName (e.g. Feedback's Create Feedback wizard authors a FeedbackDefinition and creates UnityFeedbackSettings only when a designer opts into an "ensure settings asset" checkbox; Logging's Create Logging Profile wizard authors a UnityLogProfile and creates UnityStructuredLogSettings only when an optional structured sink is added). A row for such a system offers "Create default" as its primary action instead of routing to the Hub tool.

    DependsOn

    Declaration
    public string[] DependsOn { get; }
    Property Value
    Type Description
    string[]

    The Install*() method names of the other attributed systems this one requires to be installed first. Empty when this system has no prerequisites.

    DisplayName

    Declaration
    public string DisplayName { get; }
    Property Value
    Type Description
    string

    Human-readable name for this system, or null to derive one from the method name.

    HubToolId

    Declaration
    public string HubToolId { get; }
    Property Value
    Type Description
    string

    The SerenityHubToolCatalog tool id that authors the settings asset for this system, or null when no single Hub entry authors it (only allowed when InstallsAtBootstrap is true).

    InstallsAtBootstrap

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

    True when this system is installed unconditionally during bootstrap rather than through an individually selectable wizard step — the only case where its Install*() method may be non-public.

    ModuleLabel

    Declaration
    public string ModuleLabel { get; }
    Property Value
    Type Description
    string

    The ModuleLabels constant identifying the installed system's Addressables module.

    SettingsCardinality

    Declaration
    public SerenityInstallableSystemSettingsCardinality SettingsCardinality { get; }
    Property Value
    Type Description
    SerenityInstallableSystemSettingsCardinality

    How many settings assets of SettingsTypeName belong in a project at once. Defaults to Singleton — declare Collection for a system whose settings type is meant to have one asset per configured item (a game setting, an audio player, ...).

    SettingsFieldName

    Declaration
    public string SettingsFieldName { get; }
    Property Value
    Type Description
    string

    The name of the composition-root field a designer wires this system's settings asset into, or null when the system declares none. Named by string for the same reason SettingsTypeName is: the attribute is read by reflection from assemblies that do not reference the installer.

    SettingsTypeName

    Declaration
    public string SettingsTypeName { get; }
    Property Value
    Type Description
    string

    The simple name of the settings type a wizard resolves to configure this system.

    Tier

    Declaration
    public SerenityInstallableSystemTier Tier { get; }
    Property Value
    Type Description
    SerenityInstallableSystemTier

    The adoption order this system's checklist row is grouped and sorted by.

    Implements

    _Attribute
    In this article
    © 2026 Serenity. All Rights Reserved