docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Class BurstCompatibleAttribute

    Documents and enforces (via generated tests) that the tagged method or property has to stay burst compatible.

    Inheritance
    object
    Attribute
    BurstCompatibleAttribute
    Namespace: Unity.Collections
    Assembly: Unity.Collections.dll
    Syntax
    [AttributeUsage(AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Constructor|AttributeTargets.Method|AttributeTargets.Property, AllowMultiple = true)]
    public class BurstCompatibleAttribute : Attribute
    Remarks

    This attribute cannot be used with private methods or properties.

    Fields

    CompileTarget

    Specifies whether code should be Burst compiled for the player, editor, or both.

    Declaration
    public BurstCompatibleAttribute.BurstCompatibleCompileTarget CompileTarget
    Field Value
    Type Description
    BurstCompatibleAttribute.BurstCompatibleCompileTarget
    Remarks

    When set to BurstCompatibleCompileTarget.Editor, the generated Burst compatibility code will be surrounded by #if UNITY_EDITOR to ensure that the Burst compatibility test will only be executed in the editor. The code will be compiled with Burst function pointers. If you have a non-null RequiredUnityDefine, an #if with the RequiredUnityDefine will also be emitted.

    When set to BurstCompatibilityCompileTarget.Player, the generated Burst compatibility code will only be surrounded by an #if containing the RequiredUnityDefine (or nothing if RequiredUnityDefine is null). Instead of compiling with Burst function pointers, a player build is started where the Burst AOT compiler will verify the Burst compatibility. This is done to speed up Burst compilation for the compatibility tests since Burst function pointer compilation is not done in parallel.

    When set to BurstCompatibilityCompileTarget.PlayerAndEditor, the generated Burst compatibility code will only be surrounded by an #if containing the RequiredUnityDefine (or nothing if RequiredUnityDefine is null). The code will be compiled both by the editor (using Burst function pointers) and with a player build (using Burst AOT).

    For best performance of the Burst compatibility tests, prefer to use BurstCompatibilityCompileTarget.Player as much as possible.

    RequiredUnityDefine

    Specifies the symbol that must be defined in order for the method to be tested for Burst compatibility.

    Declaration
    public string RequiredUnityDefine
    Field Value
    Type Description
    string

    Properties

    GenericTypeArguments

    Types to be used for the declared generic type or method.

    Declaration
    public Type[] GenericTypeArguments { get; set; }
    Property Value
    Type Description
    Type[]
    Remarks

    The generic type arguments are tracked separately for types and methods. Say a generic type also contains a generic method, like in the case of Foo<T>.Bar<U>(T baz, U blah). You must specify GenericTypeArguments for Foo and also for Bar to establish the concrete types for T and U. When code generation occurs for the Burst compatibility tests, any time T appears (in the definition of Foo) it will be replaced with the generic type argument you specified for Foo and whenever U appears (in method Bar's body) it will be replaced by whatever generic type argument you specified for the method Bar.

    In This Article
    Back to top
    Copyright © 2024 Unity Technologies — Trademarks and terms of use
    • Legal
    • Privacy Policy
    • Cookie Policy
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)