docs.unity3d.com
    Show / Hide Table of Contents

    Method HasComponent

    HasComponent<T>(Entity)

    Checks whether an entity has a specific type of component.

    Declaration
    protected bool HasComponent<T>(Entity entity)
        where T : struct, IComponentData
    Parameters
    Type Name Description
    Entity entity

    The Entity object.

    Returns
    Type Description
    Boolean

    True, if the specified entity has the component.

    Type Parameters
    Name Description
    T

    The data type of the component.

    Remarks

    Always returns false for an entity that has been destroyed.

    Use this method to check if another entity has a given type of component using its Entity object. For example, if you have a component that contains an Entity field, you can check whether the referenced entity has a specific type of component using this method. (Entities in the set always have required components, so you don’t need to check for them.)

    When iterating over a set of entities via Entities.ForEach, avoid using this method with the current entity in the set. It is generally faster to change your entity query methods to avoid optional components; this may require a different Entities.ForEach construction to handle each combination of optional and non-optional components.

    When you call this method on the main thread, it invokes HasComponent<T>(Entity). (An Entities.ForEach function invoked with Run() executes on the main thread.) When you call this method inside a job scheduled using Entities.ForEach, this method gets replaced with component access methods through ComponentDataFromEntity<T>.

    In both cases, this lookup method results in a slower, indirect memory access. When possible, organize your data to minimize the need for indirect lookups.

    In This Article
    • HasComponent<T>(Entity)
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023