Struct EntityArchetype | Entities | 0.2.0-preview.18
docs.unity3d.com
    Show / Hide Table of Contents

    Struct EntityArchetype

    An EntityArchetype is a unique combination of component types. The EntityManager uses the archetype to group all entities that have the same sets of components.

    Namespace: Unity.Entities
    Syntax
    public struct EntityArchetype : IEquatable<EntityArchetype>
    Remarks

    An entity can change archetype fluidly over its lifespan. For example, when you add or remove components, the archetype of the affected entity changes.

    An archetype object is not a container; rather it is an identifier to each unique combination of component types that an application has created at run time, either directly or implicitly.

    You can create archetypes directly using CreateArchetype(ComponentType[]). You also implicitly create archetypes whenever you add or remove a component from an entity. An EntityArchetype object is an immutable singleton; creating an archetype with the same set of components, either directly or implicitly, results in the same archetype for a given EntityManager.

    The ECS framework uses archetypes to group entities that have the same structure together. The ECS framework stores component data in blocks of memory called chunks. A given chunk stores only entities having the same archetype. You can get the EntityArchetype object for a chunk from its Archetype property.

    Properties

    ChunkCapacity

    The number of entities having this archetype that can fit into a single chunk of memory.

    Declaration
    public int ChunkCapacity { get; }
    Property Value
    Type Description
    Int32

    Capacity is determined by the fixed, 16KB size of the memory blocks allocated by the ECS framework and the total storage size of all the component types in the archetype.

    ChunkCount

    The current number of chunks storing entities having this archetype.

    Declaration
    public int ChunkCount { get; }
    Property Value
    Type Description
    Int32

    The number of chunks.

    Remarks

    This value can change whenever structural changes occur. Structural changes include creating or destroying entities, adding components to or removing them from an entity, and changing the value of shared components, all of which alter where entities are stored.

    Valid

    Reports whether this EntityArchetype instance references a non-null archetype.

    Declaration
    public bool Valid { get; }
    Property Value
    Type Description
    Boolean

    True, if the archetype is valid.

    Methods

    Equals(Object)

    Reports whether this EntityArchetype references the same archetype as another object.

    Declaration
    public override bool Equals(object compare)
    Parameters
    Type Name Description
    Object compare

    The object to compare.

    Returns
    Type Description
    Boolean

    True, if the compare parameter is a EntityArchetype instance that points to the same archetype.

    Overrides
    ValueType.Equals(Object)

    Equals(EntityArchetype)

    Compares archetypes for equality.

    Declaration
    public bool Equals(EntityArchetype entityArchetype)
    Parameters
    Type Name Description
    EntityArchetype entityArchetype

    The EntityArchetype to compare.

    Returns
    Type Description
    Boolean

    Returns true, if both EntityArchetype instances reference the same archetype.

    GetComponentTypes(Allocator)

    Gets the types of the components making up this archetype.

    Declaration
    public NativeArray<ComponentType> GetComponentTypes(Allocator allocator = null)
    Parameters
    Type Name Description
    Allocator allocator

    The allocation type to use for the returned NativeArray.

    Returns
    Type Description
    NativeArray<ComponentType>

    A native array containing the ComponentType objects of this archetype.

    Remarks

    The set of component types in an archetype cannot change; adding components to an entity or removing components from an entity changes the archetype of that entity (possibly resulting in the creation of a new archetype). The original archetype remains unchanged.

    GetHashCode()

    Returns the hash of the archetype.

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    Int32

    An integer hash code.

    Overrides
    ValueType.GetHashCode()
    Remarks

    Two EntityArchetype instances referencing the same archetype return the same hash.

    Operators

    Equality(EntityArchetype, EntityArchetype)

    Compares the archetypes for equality.

    Declaration
    public static bool operator ==(EntityArchetype lhs, EntityArchetype rhs)
    Parameters
    Type Name Description
    EntityArchetype lhs

    A EntityArchetype object.

    EntityArchetype rhs

    Another EntityArchetype object.

    Returns
    Type Description
    Boolean

    True, if these EntityArchetype instances reference the same archetype.

    Inequality(EntityArchetype, EntityArchetype)

    Compares the archetypes for inequality.

    Declaration
    public static bool operator !=(EntityArchetype lhs, EntityArchetype rhs)
    Parameters
    Type Name Description
    EntityArchetype lhs

    A EntityArchetype object.

    EntityArchetype rhs

    Another EntityArchetype object.

    Returns
    Type Description
    Boolean

    True, if these EntityArchetype instances reference different archetypes.

    Back to top Copyright © 2019 Unity Technologies
    Generated by DocFX