Class EntityQueryManagedComponentExtensions
Namespace: Unity.Entities
Syntax
public static class EntityQueryManagedComponentExtensions
Methods
GetSingleton<T>(EntityQuery)
Gets the value of a singleton component.
Declaration
public static T GetSingleton<T>(this EntityQuery query)
where T : class, IComponentData
Parameters
Type | Name | Description |
---|---|---|
EntityQuery | query |
Returns
Type | Description |
---|---|
T | A copy of the singleton component. |
Type Parameters
Name | Description |
---|---|
T | The component type. |
Remarks
A singleton component is a component of which only one instance exists that satisfies this query.
Exceptions
Type | Condition |
---|---|
InvalidOperationException |
See Also
SetSingleton<T>(EntityQuery, T)
Sets the value of a singleton component.
Declaration
public static void SetSingleton<T>(this EntityQuery query, T value)
where T : class, IComponentData
Parameters
Type | Name | Description |
---|---|---|
EntityQuery | query | |
T | value | An instance of type T containing the values to set. |
Type Parameters
Name | Description |
---|---|
T | The component type. |
Remarks
For a component to be a singleton, there can be only one instance of that component that satisfies this query.
Note: singletons are otherwise normal entities. The EntityQuery and ComponentSystemBase singleton functions add checks that you have not created two instances of a type that can be accessed by this singleton query, but other APIs do not prevent such accidental creation.
To create a singleton, create an entity with the singleton component.
For example, if you had a component defined as:
public struct Singlet : IComponentData
{
public int Value;
}
You could create a singleton as follows:
Entity singletonEntity = entityManager.CreateEntity(typeof(Singlet));
entityManager.SetComponentData(singletonEntity, new Singlet { Value = 1 });
To update the singleton component after creation, you can use an EntityQuery object that
selects the singleton entity and call this SetSingleton()
function:
queryForSingleton.SetSingleton<Singlet>(new Singlet {Value = 1});
You can set and get the singleton value from a system: see SetSingleton<T>(T) and GetSingleton<T>().
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Thrown if more than one instance of this component type exists in the world or the component type appears in more than one archetype. |