TakeTempSnapshot(Action<string, bool>, CaptureFlags)
Triggers a memory snapshot capture to the Application.temporaryCachePath folder.
Read time 1 minuteLast updated 10 days ago
Definition
- Type: Method
- Namespace: Unity.Profiling.Memory
- Assembly: UnityEngine.CoreModule
public static void TakeTempSnapshot(Action<string, bool> finishCallback, CaptureFlags captureFlags = CaptureFlags.ManagedObjects | CaptureFlags.NativeObjects)
Parameters
Event that is fired once the memory snapshot has finished the process of capturing data.
Flag mask defining the content of the memory snapshot.
Remarks
Internally MemoryProfiler.TakeSnapshot is called with the destination path set to the "<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. } }}
Additional Resources: Application.temporaryCachePath, MemoryProfiler.TakeSnapshot.