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

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,.