docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Method GetSingletonRW

    GetSingletonRW<T>()

    Gets a reference to the singleton component, for read/write access.

    Declaration
    public static RefRW<T> GetSingletonRW<T>() where T : unmanaged, IComponentData
    Returns
    Type Description
    RefRW<T>

    The component.

    Type Parameters
    Name Description
    T

    The IComponentData subtype of the singleton component. This component type must not implement IEnableableComponent

    Remarks

    NOTE: this reference refers directly to the singleton's component memory. Structural changes to the chunk where the singleton resides can invalidate this reference and result in crashes or undefined behaviour if the reference is used after structural changes.

    This method differs from GetSingleton<T>() in the following ways:

    The query that it generates requests read/write access to T, which registers the system as a writer of that component, so systems that read that component and update later wait for this system's jobs. GetSingleton<T>() generates a read-only query, which registers the system as a reader instead.

    It throws an exception if a job that reads or writes T is still running, whereas GetSingleton<T>() throws only if a job that writes T is still running. Neither method completes the conflicting job for you, and both run this check only if safety checks are enabled. To complete the job, call CompleteDependencyBeforeRW<T>() first, or restructure the data dependencies.

    It increments the change version of T, even if you write the same value, so queries that filter on changes to that component match the singleton entity. GetSingleton<T>() leaves the change version unchanged.

    Exceptions
    Type Condition
    InvalidOperationException

    Thrown if T is a zero-sized component or implements IEnableableComponent, and if safety checks are enabled.

    See Also
    GetSingleton<T>()
    GetSingleton<T>()
    GetSingletonRW<T>()
    In This Article
    Back to top
    Copyright © 2026 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)