UnsafeUtility.ArrayElementAsRef
Declaration
public static ref T ArrayElementAsRef(void* ptr, int index);Параметры
| Параметр | Описание |
|---|---|
| ПТР | Указатель на первый элемент массива. Убедитесь, что этот указатель является действительным и указывает на выделенную память. |
| индекс | Нулевой индекс элемента для ссылки. Проверьте, что индекс находится в пределах массива, чтобы предотвратить нарушения доступа. |
Возвращаемое значение
T Ссылка на значение типа T в указанном индексе в массиве. Эта ссылка позволяет непосредственно манипулировать значением в его месте в памяти.
Описание
Получает ссылку на значение типа T в массиве с указанным индексом в памяти.
Метод ArrayElementAsRef позволяет прямой доступ к элементу массива по его индексу в памяти. Этот метод предоставляет ссылку на элемент, позволяющую эффективно манипулировать данными без копирования. Используйте этот метод с осторожностью, так как неправильное использование указателя может привести к повреждению памяти или сбоям приложения.
using 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}"); } } }
Дополнительные ресурсы: ,UnsafeUtility.ReadArrayElement,, ,UnsafeUtility.WriteArrayElement,.