UnsafeUtility.AddressOf
Declaration
public static void* AddressOf(ref T output);Параметры
| Параметр | Описание |
|---|---|
| Выпуск | Управляемый объект, для которого требуется адрес памяти. Убедитесь, что объект остается действительным и существует на протяжении всего периода использования его адреса. |
Возвращаемое значение
void* Указатель void, представляющий адрес объекта в памяти. Он даёт прямой доступ к этой области памяти. Обращайтесь с таким указателем аккуратно, чтобы не получить ошибок во время выполнения.
Описание
Получает адрес памяти указанного объекта в качестве указателя.
Метод AddressOf извлекает адрес памяти управляемого объекта. Используйте его в сценариях, требующих прямого доступа к памяти или взаимодействия с неуправляемым кодом, где эффективность имеет решающее значение.
При использовании этого метода следует проявлять осторожность. Неправильное обращение с адресами памяти может привести к повреждению памяти или нестабильности приложения. Используйте этот метод для повышения производительности в областях, где безопасность управляемой памяти требует значительных затрат.
using Unity.Collections.LowLevel.Unsafe; using UnityEngine;
public class AddressOfExample : MonoBehaviour { struct ExampleStruct { public int Number; }
void Start() { ExampleStruct example = new ExampleStruct { Number = 100 }; unsafe { // Get the memory address of the struct void* address = UnsafeUtility.AddressOf(ref example);
// Modify the struct's value directly through the pointer ExampleStruct* pointer = (ExampleStruct*)address; pointer->Number = 200;
Debug.Log($"Modified value: {example.Number}"); // Outputs: Modified value: 200 } } }
Дополнительные ресурсы: ,UnsafeUtility.As,.