UxrSingleton<T> Class
An improved singleton implementation over UxrAbstractSingleton<T> for non-abstract classes. UxrSingleton<T> guarantees that an Instance will always be available by instantiating the singleton if it wasn’t found in the scene. Additionally, it can instantiate a prefab if there is one available in a well-known location.
The steps followed by this singleton implementation to assign the instance are the:
- The singleton component is searched in the scene to see if it was pre-instantiated or is already available.
- If not found, the component tries to be instantiated in the scene using a prefab in a well known Resources folder. The well known path is SingletonResources in any Resources folder and the prefab name is the singleton class name. A prefab allows to assign initial properties to the component and also hang additional resources (meshes, textures) from the GameObject if needed.
- If not found, a new GameObject is instantiated and the singleton is added using AddComponent``1().
Inheritance Hierarchy
System.Object
Object
Component
Behaviour
MonoBehaviour
UltimateXR.Core.Components.UxrComponent
UltimateXR.Core.Components.Singleton.UxrAbstractSingleton<T>
UltimateXR.Core.Components.Singleton.UxrSingleton<T>
UltimateXR.Core.Components.Singleton.UxrAsyncInitSingleton<T>
UltimateXR.Core.UxrManager
UltimateXR.Guides.UxrCompass
UltimateXR.Manipulation.UxrGrabManager
UltimateXR.Mechanics.Weapons.UxrWeaponManager
Namespace: UltimateXR.Core.Components.Singleton
Assembly: UltimateXR (in UltimateXR.dll) Version: 0.0.0.0
Syntax
C#
public abstract class UxrSingleton<T> : UxrAbstractSingleton<T>
where T : UxrSingleton<T>
Type Parameters
- T
- Type the singleton is for. This template can only be used with a hierarchy where T is specified at its lowers level (sealed). For use in abstract classes, check UxrAbstractSingleton<T>.
Constructors
Name | Description | |
---|---|---|
UxrSingleton<T> |
Properties
Name | Description | |
---|---|---|
Instance | Gets the unique, global instance of the given component. |
Methods
Name | Description | |
---|---|---|
Poke | Dummy method forcing Instance to run the instance finding/creation process. |
Extension Methods
Name | Description | |
---|---|---|
CheckSetEnabled | Enables/disabled the component if it isn’t enabled already. (Defined by MonoBehaviourExt.) | |
GetOrAddComponent<T> | Gets the Component of a given type. If it doesn’t exist, it is added to the GameObject. (Defined by ComponentExt.) | |
GetPathUnderScene | Gets the full path under current scene, including all parents, but scene name, for the given component. (Defined by ComponentExt.) | |
GetSceneUid | Gets an unique identifier string for the given component. (Defined by ComponentExt.) | |
GetUniqueScenePath | 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.) | |
LoopCoroutine | Creates a coroutine that simplifies executing a loop during a certain amount of time. (Defined by MonoBehaviourExt.) | |
SafeGetComponentInParent<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.) | |
ShowInInspector(Boolean) | Overloaded. Controls whether to show the current object in the inspector. (Defined by ObjectExt.) | |
ShowInInspector(Boolean, Boolean) | Overloaded. Controls whether to show the current object in the inspector and whether it is editable. (Defined by ObjectExt.) | |
ThrowIfNull | Throws an exception if the object is null. (Defined by ObjectExt.) |
Remarks
The singleton can be a pre-existing component in a scene. If not, Instance takes care of instancing it and make it the singleton. This singleton can only be used in sealed classes. For use in abstract classes check UxrAbstractSingleton<T> instead.