UnsafeUtility.MemCpyReplicate
Declaration
public static void MemCpyReplicate(void* destination, void* source, int size, int count);Параметры
| Параметр | Описание |
|---|---|
| место назначения | Указатель на блок памяти назначения. Убедитесь, что в этом блоке достаточно места для хранения реплицируемых данных. |
| источник | Указатель на блок исходной памяти. Этот блок должен содержать данные, которые требуется реплицировать. |
| размер | Размер в байтах блока данных для копирования и репликации. Этот параметр определяет количество байт, реплицируемых каждый раз. |
| Количество | Количество раз, когда блок исходных данных должен быть реплицирован в буфере назначения. |
Описание
Копирует память из источника в назначение и реплицирует ее несколько раз.
Метод MemCpyReplicate копирует указанный блок памяти из исходного расположения и репликирует этот блок несколько раз в конечное расположение. Это полезно для быстрой инициализации большого буфера с повторяющимися значениями, например, для создания постоянных буферов или инициализации больших массивов с повторяющимися шаблонами.
using UnityEngine; using Unity.Collections.LowLevel.Unsafe;
public class MemCpyReplicateExample : MonoBehaviour { void Start() { int elementCount = 3; int replicateCount = 4; int dataSize = elementCount * sizeof(float);
// Use stackalloc to allocate memory for source and destination buffers unsafe { float* srcBuffer = stackalloc float[elementCount]; float* dstBuffer = stackalloc float[elementCount * replicateCount];
// Initialize the source buffer with multiple values srcBuffer[0] = 1.1f; srcBuffer[1] = 2.2f; srcBuffer[2] = 3.3f;
// Use MemCpyReplicate to copy and replicate the source values into the destination UnsafeUtility.MemCpyReplicate(dstBuffer, srcBuffer, dataSize, replicateCount);
// Output the contents of the destination buffer to verify replication Debug.Log("Contents of destination buffer after MemCpyReplicate:"); for (int i = 0; i < elementCount * replicateCount; i++) { Debug.Log(dstBuffer[i]); // Expected pattern: 1.1, 2.2, 3.3 repeated } } } }
Дополнительные ресурсы: ,UnsafeUtility.MemCpy,.