UxrAbstractSingleton<T> Class

A singleton base class that can be used with abstract classes.

The difference with UxrSingleton<T> is that UxrSingleton<T> guarantees that an instance will always be available in the scene by instantiating the component if it’s not found. This means Instance will always be non-null and can be used with or without an instance available in the scene. UxrSingleton<T> also allows to use automatic prefab instantiation if a compatible singleton prefab is present in a special Resources folder. Since abstract classes can’t be instantiated, Instance in UxrAbstractSingleton<T> will be non-null only if a child component is available somewhere in the scene.

For design purposes, a singleton may still be desirable when programming an abstract class, hence this UxrAbstractSingleton<T> component base class.

Inheritance Hierarchy

System.Object
  Object
    Component
      Behaviour
        MonoBehaviour
          UltimateXR.Core.Components.UxrComponent
            UltimateXR.Core.Components.Singleton.UxrAbstractSingleton<T>
              UltimateXR.Core.Components.Singleton.UxrAsyncInitAbstractSingleton<T>
              UltimateXR.Core.Components.Singleton.UxrSingleton<T>
Namespace: UltimateXR.Core.Components.Singleton
Assembly: UltimateXR (in UltimateXR.dll) Version: 0.0.0.0

Syntax

C#

public abstract class UxrAbstractSingleton<T> : UxrComponent
where T : UxrAbstractSingleton<T>


Type Parameters

 

T
Class the singleton is for
  The UxrAbstractSingleton<T> type exposes the following members.

Constructors

NameDescription
Protected methodUxrAbstractSingleton<T>

Properties

NameDescription
Public propertyStatic memberHasInstance Gets whether there is a singleton instance available.
Public propertyStatic memberInstance Gets the unique, global instance of the given component.
Public propertyIsInitialized Gets or sets whether the singleton has been initialized.
Protected propertyNeedsDontDestroyOnLoad Whether the singleton requires DontDestroyOnLoad(Object) applied to the GameObject so that it doesn’t get destroyed when a new scene is loaded.

Methods

NameDescription
Protected methodAwake Tries to set the singleton instance. (Overrides UxrComponent.Awake().)
Protected methodStatic memberGetInstance Gets the singleton instance.
Protected methodInitInternal The default internal initialization. Child classes can override this method if they require initialization code.
Protected methodOnDestroy Destroys the singleton instance. (Overrides UxrComponent.OnDestroy().)
Protected methodReleaseInternal The default internal release. Child classes can override this method if they required deallocation code.
Protected methodStatic memberTrySetInstance Tries to set the singleton instance.

Extension Methods

NameDescription
Public Extension MethodCheckSetEnabled Enables/disabled the component if it isn’t enabled already. (Defined by MonoBehaviourExt.)
Public Extension MethodGetOrAddComponent<T> Gets the Component of a given type. If it doesn’t exist, it is added to the GameObject. (Defined by ComponentExt.)
Public Extension MethodGetPathUnderScene Gets the full path under current scene, including all parents, but scene name, for the given component. (Defined by ComponentExt.)
Public Extension MethodGetSceneUid Gets an unique identifier string for the given component. (Defined by ComponentExt.)
Public Extension MethodGetUniqueScenePath Gets an unique path in the scene for the given component. It will include scene name, sibling and component indices to make it unique. (Defined by ComponentExt.)
Public Extension MethodLoopCoroutine Creates a coroutine that simplifies executing a loop during a certain amount of time. (Defined by MonoBehaviourExt.)
Public Extension MethodSafeGetComponentInParent<T> Gets the Component of a given type in the GameObject or any of its parents. It also works on prefabs, where regular GetComponentInParent(Type, Boolean) will not work: https://issuetracker.unity3d.com/issues/getcomponentinparent-is-returning-null-when-the-gameobject-is-a-prefab (Defined by ComponentExt.)
Public Extension MethodShowInInspector(Boolean)Overloaded.
Controls whether to show the current object in the inspector. (Defined by ObjectExt.)
Public Extension MethodShowInInspector(Boolean, Boolean)Overloaded.
Controls whether to show the current object in the inspector and whether it is editable. (Defined by ObjectExt.)
Public Extension MethodThrowIfNull Throws an exception if the object is null. (Defined by ObjectExt.)

Remarks

 

  • Make sure to call base.Awake() first in child classes where Awake() is used.
  • Use HasInstance to check whether the instance exists.

See Also

Reference

UltimateXR.Core.Components.Singleton Namespace