docs.unity3d.com
    Show / Hide Table of Contents

    Struct DynamicBuffer<T>

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

    Namespace: Unity.Entities
    Syntax
    [NativeContainer]
    public struct DynamicBuffer<T> : IEnumerable<T>, IEnumerable, INativeList<T>, IIndexable<T> where T : struct
    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 class DynamicBufferExample : ComponentSystem
    {
        protected override void OnUpdate()
        {
            float sum = 0;
    
            Entities.ForEach((DynamicBuffer<FloatBufferElement> buffer) =>
            {
                for(int i = 0; i < buffer.Length; i++)
                {
                    sum += buffer[i].Value;
                }
            });
    
            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.

    Item[Int32]

    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(T[])

    Copies all the elements from an array.

    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.

    ElementAt(Int32)

    Return a reference to the element at index.

    EnsureCapacity(Int32)

    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(Int32, 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(Int32)

    Removes the element at the specified index.

    RemoveAtSwapBack(Int32)

    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(Int32, Int32)

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

    RemoveRangeSwapBack(Int32, Int32)

    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.

    ResizeUninitialized(Int32)

    Increases the buffer capacity and length.

    ToNativeArray(Allocator)

    Copies the buffer into a new native array.

    TrimExcess()

    Removes any excess capacity in the buffer.

    Extension Methods

    EnumerableHelpers.DistinctBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>)
    EnumerableHelpers.FindDuplicatesBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>)
    EnumerableHelpers.IsStructurallyEqualTo<T>(IEnumerable<T>, IEnumerable<T>)
    In This Article
    • Properties
    • Methods
    • Extension Methods
    Back to top
    Terms of use
    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