MemoryProfiler.TakeTempSnapshot
Declaration
public static void TakeTempSnapshot(Action<string,bool> finishCallback, Unity.Profiling.Memory.CaptureFlags captureFlags);Параметры
| Параметр | Описание |
|---|---|
| finishCallback | Событие, которое запускается после того, как снимок памяти завершил процесс захвата данных. |
| captureFlags | Маска флага, определяющая содержимое снимка памяти. |
Описание
Вызывается захват снимка памяти в папку Application.temporaryCachePath.
Внутренне MemoryProfiler.TakeSnapshot вызываются с путем назначения "<Application.temporaryCachePath>/<projectName>.snap".
using System.Collections; using System.IO; using Unity.Profiling.Memory; using UnityEngine;
public static class MemoryProfilerExample { public static IEnumerator TakeSnapshot() { bool snapshotFinished = false; string resultingSnapshotPath = null; MemoryProfiler.TakeTempSnapshot((filePath, success) => { snapshotFinished = true; if (success) { resultingSnapshotPath = Path.GetFullPath(filePath); Debug.Log($"Snapshot captured and stored at {resultingSnapshotPath}."); } else { Debug.LogError("Failed to take a snapshot."); } }, CaptureFlags.ManagedObjects | CaptureFlags.NativeObjects | CaptureFlags.NativeAllocations);
while (!snapshotFinished) { yield return null; }
if (resultingSnapshotPath != null && File.Exists(resultingSnapshotPath)) { var fileName = Path.GetFileName(resultingSnapshotPath); // Ensure a unique file name to move this file to. var finalPath = Path.Combine(Application.persistentDataPath, "DateTime.Now.Ticks" + fileName);
// Remove any pre-existing file first. if (File.Exists(finalPath)) File.Delete(finalPath);
// Move the file out of the temporary cache to somewhere more permanent. File.Move(resultingSnapshotPath, finalPath);
// If you don't have access to the Player's file system you could also upload the file to an end-point that is accessible to you here. } } }
Дополнительные ресурсы: ,Application.temporaryCachePath,, ,MemoryProfiler.TakeSnapshot,.