ArrayElementAsRef<T>(void*, int)
Obtains a reference to a value of type T in an array at a specified index in memory.
Read time 1 minuteLast updated 13 days ago
Definition
- Type: Method
- Namespace: Unity.Collections.LowLevel.Unsafe
- Assembly: UnityEngine.CoreModule
public static ref T ArrayElementAsRef<T>(void* ptr, int index) where T : struct
Parameters
Returns
Type | Description |
|---|---|
| T | A reference to the value of type T at the specified index within the array. This reference allows direct manipulation of the value at its memory location. |
Remarks
The method allows direct access to an array element by its index in memory. This method provides a reference to the element, enabling efficient data manipulation without copying. Use this method with care, as incorrect pointer usage can cause memory corruption or application crashes.
ArrayElementAsRefusing UnityEngine;using Unity.Collections.LowLevel.Unsafe;using System.Runtime.InteropServices;public class ArrayElementAsRefExample : MonoBehaviour{ [StructLayout(LayoutKind.Sequential)] struct CustomStruct { public int Id; public float Value; } void Start() { int arrayLength = 5; // Allocate a buffer for CustomStruct using stackalloc unsafe { CustomStruct* structArray = stackalloc CustomStruct[arrayLength]; // Initialize the array with values for (int i = 0; i < arrayLength; i++) { structArray[i].Id = i; structArray[i].Value = i * 1.5f; } // Get a reference to an element using ArrayElementAsRef ref CustomStruct element = ref UnsafeUtility.ArrayElementAsRef<CustomStruct>(structArray, 2); element.Value = 99.9f; // Modify the value in place // Output the modified value Debug.Log($"Modified element at index 2: Id = {structArray[2].Id}, Value = {structArray[2].Value}"); } }}
Additional Resources: UnsafeUtility.ReadArrayElement, UnsafeUtility.WriteArrayElement.