docs.unity3d.com
Search Results for

    Show / Hide Table of Contents

    Struct DynamicBuffer<T>

    An array-like data structure that can be used as a component.

    Implements
    IQueryTypeParameter
    INativeList<T>
    IIndexable<T>
    Namespace: Unity.Entities
    Assembly: Unity.Entities.dll
    Syntax
    [NativeContainer]
    public struct DynamicBuffer<T> : IQueryTypeParameter, INativeList<T>, IIndexable<T> where T : unmanaged
    Type Parameters
    Name Description
    T

    The data type stored in the buffer. Must be a value type.

    Examples
    [InternalBufferCapacity(8)]
    public struct FloatBufferElement : IBufferElementData
    {
        // Actual value each buffer element will store.
        public float Value;
    
        // The following implicit conversions are optional, but can be convenient.
        public static implicit operator float(FloatBufferElement e)
        {
            return e.Value;
        }
    
        public static implicit operator FloatBufferElement(float e)
        {
            return new FloatBufferElement { Value = e };
        }
    }
    
    public partial class DynamicBufferExample : SystemBase
    {
        protected override void OnUpdate()
        {
            float sum = 0;
    
            Entities.ForEach((DynamicBuffer<FloatBufferElement> buffer) =>
            {
                for (int i = 0; i < buffer.Length; i++)
                {
                    sum += buffer[i].Value;
                }
            }).Run();
    
            Debug.Log("Sum of all buffers: " + sum);
        }
    }

    Properties

    Name Description
    Capacity

    The number of elements the buffer can hold.

    IsCreated

    Whether the memory for this dynamic buffer has been allocated.

    IsEmpty

    Reports whether container is empty.

    this[int]

    Array-like indexing operator.

    Length

    The number of elements the buffer holds.

    Methods

    Name Description
    Add(T)

    Adds an element to the end of the buffer, resizing as necessary.

    AddRange(NativeArray<T>)

    Adds all the elements from newElems to the end of the buffer, resizing as necessary.

    AsNativeArray()

    Return a native array that aliases the original buffer contents.

    Clear()

    Sets the buffer length to zero.

    CopyFrom(NativeArray<T>)

    Copies all the elements from the specified native array into this dynamic buffer.

    CopyFrom(NativeSlice<T>)

    Copies all the elements from the specified native slice into this dynamic buffer.

    CopyFrom(DynamicBuffer<T>)

    Copies all the elements from another dynamic buffer.

    CopyFrom(T[])

    Copies all the elements from an array.

    ElementAt(int)

    Gets the reference to the element at the given index.

    EnsureCapacity(int)

    Ensures that the buffer has at least the specified capacity.

    GetEnumerator()

    Provides an enumerator for iterating over the buffer elements.

    GetUnsafePtr()

    Gets an unsafe read/write pointer to the contents of the buffer.

    GetUnsafeReadOnlyPtr()

    Gets an unsafe read-only pointer to the contents of the buffer.

    Insert(int, T)

    Inserts an element at the specified index, resizing as necessary.

    Reinterpret<U>()

    Returns a dynamic buffer of a different type, pointing to the same buffer memory.

    RemoveAt(int)

    Removes the element at the specified index.

    RemoveAtSwapBack(int)

    Removes the element at the specified index and swaps the last element into its place. This is more efficient than moving all elements following the removed element, but does change the order of elements in the buffer.

    RemoveRange(int, int)

    Removes the specified number of elements, starting with the element at the specified index.

    RemoveRangeSwapBack(int, int)

    Removes the specified number of elements, starting with the element at the specified index. It replaces the elements that were removed with a range of elements from the back of the buffer. This is more efficient than moving all elements following the removed elements, but does change the order of elements in the buffer.

    Resize(int, NativeArrayOptions)

    Sets the length of this buffer, increasing the capacity if necessary.

    ResizeUninitialized(int)

    Sets the length of this buffer, increasing the capacity if necessary.

    ToNativeArray(AllocatorHandle)

    Copies the buffer into a new native array.

    TrimExcess()

    Removes any excess capacity in the buffer.

    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)