Unity 6.3
0 онлайн 82 гостей 3 в системе
Вход

UnsafeUtility.MemCpy

Declaration

public static void MemCpy(void* destination, void* source, long size);

Параметры

Параметр Описание
место назначения Указатель на блок памяти назначения. Убедитесь, что этот блок достаточно большой для хранения копируемых данных.
источник Указатель на блок исходной памяти. Этот блок должен содержать данные, которые нужно скопировать.
размер Число байт, которые должны быть скопированы из источника в назначение.

Описание

Копирует указанное количество байтов из расположения исходной памяти в расположение конечной памяти.

Метод MemCpy эффективно копирует данные из одного места в памяти в другое. Он идеально подходит для быстрого дублирования содержимого памяти в приложениях, требующих высокой производительности. Обратите внимание, что если области памяти источника и назначения перекрываются, то результат не гарантированно будет правильным. В таких случаях используйте UnsafeUtility.MemMove для безопасной обработки перекрывающихся данных.

using UnityEngine;
using Unity.Collections.LowLevel.Unsafe;

public class MemCpyExample : MonoBehaviour { void Start() { int numElements = 5; int size = numElements * sizeof(float);

// Use stackalloc to allocate memory for source and destination buffers unsafe { float* srcBuffer = stackalloc float[numElements]; float* dstBuffer = stackalloc float[numElements];

// Initialize the source buffer with data for (int i = 0; i < numElements; i++) { srcBuffer[i] = i * 1.5f; // Fills srcBuffer with values 0.0, 1.5, 3.0, 4.5, 6.0 }

// Use MemCpy to copy data from source to destination UnsafeUtility.MemCpy(dstBuffer, srcBuffer, size);

// Output the contents of the destination buffer to verify the copy Debug.Log("Contents of destination buffer after MemCpy:"); for (int i = 0; i < numElements; i++) { Debug.Log(dstBuffer[i]); // Expected output: 0.0, 1.5, 3.0, 4.5, 6.0 } } } }

Дополнительные ресурсы: ,UnsafeUtility.MemMove,.