版本:Unity 6 (6000.0)
语言English
  • C#

ProfilerMarker.Handle

建议修改

成功!

感谢您帮助我们改进 Unity 文档的质量。尽管我们无法接受所有意见,但我们确实会仔细阅读收到的每一条用户建议,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,您建议的修改无法提交。请在几分钟后重试。感谢您抽出时间帮助我们改进 Unity 文档的质量。

关闭

取消

public IntPtr Handle;

描述

获取ProfilerMarker的本地句柄。

使用句柄来获得本地标记句柄,并扩展ProfilerMarker的功能。

using System.Diagnostics;
using System.Runtime.CompilerServices;
using Unity.Collections.LowLevel.Unsafe;
using Unity.Profiling;
using Unity.Profiling.LowLevel;
using Unity.Profiling.LowLevel.Unsafe;

public static class ProfilerMarkerExtension { [MethodImpl(MethodImplOptions.AggressiveInlining)] [Conditional("ENABLE_PROFILER")] public static unsafe void Begin(this ProfilerMarker marker, int metadata) { var data = new ProfilerMarkerData(); data.Type = (byte)ProfilerMarkerDataType.Int32; data.Size = (uint)UnsafeUtility.SizeOf<int>(); data.Ptr = UnsafeUtility.AddressOf(ref metadata); ProfilerUnsafeUtility.BeginSampleWithMetadata(marker.Handle, 1, &data); }

[MethodImpl(MethodImplOptions.AggressiveInlining)] [Conditional("ENABLE_PROFILER")] public static unsafe void Begin(this ProfilerMarker marker, uint metadata) { var data = new ProfilerMarkerData(); data.Type = (byte)ProfilerMarkerDataType.UInt32; data.Size = (uint)UnsafeUtility.SizeOf<uint>(); data.Ptr = UnsafeUtility.AddressOf(ref metadata); ProfilerUnsafeUtility.BeginSampleWithMetadata(marker.Handle, 1, &data); }

[MethodImpl(MethodImplOptions.AggressiveInlining)] [Conditional("ENABLE_PROFILER")] public static unsafe void Begin(this ProfilerMarker marker, long metadata) { var data = stackalloc ProfilerMarkerData[1]; data[0].Type = (byte)ProfilerMarkerDataType.Int64; data[0].Size = (uint)UnsafeUtility.SizeOf<long>(); data[0].Ptr = UnsafeUtility.AddressOf(ref metadata); ProfilerUnsafeUtility.BeginSampleWithMetadata(marker.Handle, 1, data); }

[MethodImpl(MethodImplOptions.AggressiveInlining)] [Conditional("ENABLE_PROFILER")] public static unsafe void Begin(this ProfilerMarker marker, ulong metadata) { var data = stackalloc ProfilerMarkerData[1]; data[0].Type = (byte)ProfilerMarkerDataType.UInt64; data[0].Size = (uint)UnsafeUtility.SizeOf<ulong>(); data[0].Ptr = UnsafeUtility.AddressOf(ref metadata); ProfilerUnsafeUtility.BeginSampleWithMetadata(marker.Handle, 1, data); }

[MethodImpl(MethodImplOptions.AggressiveInlining)] [Conditional("ENABLE_PROFILER")] public static unsafe void Begin(this ProfilerMarker marker, float metadata) { var data = stackalloc ProfilerMarkerData[1]; data[0].Type = (byte)ProfilerMarkerDataType.Float; data[0].Size = (uint)UnsafeUtility.SizeOf<float>(); data[0].Ptr = UnsafeUtility.AddressOf(ref metadata); ProfilerUnsafeUtility.BeginSampleWithMetadata(marker.Handle, 1, data); }

[MethodImpl(MethodImplOptions.AggressiveInlining)] [Conditional("ENABLE_PROFILER")] public static unsafe void Begin(this ProfilerMarker marker, double metadata) { var data = stackalloc ProfilerMarkerData[1]; data[0].Type = (byte)ProfilerMarkerDataType.Double; data[0].Size = (uint)UnsafeUtility.SizeOf<double>(); data[0].Ptr = UnsafeUtility.AddressOf(ref metadata); ProfilerUnsafeUtility.BeginSampleWithMetadata(marker.Handle, 1, data); }

[MethodImpl(MethodImplOptions.AggressiveInlining)] [Conditional("ENABLE_PROFILER")] public static unsafe void Begin(this ProfilerMarker marker, string metadata) { var data = stackalloc ProfilerMarkerData[1]; data[0].Type = (byte)ProfilerMarkerDataType.String16; fixed(char* c = metadata) { data[0].Size = ((uint)metadata.Length + 1) * 2; data[0].Ptr = c; ProfilerUnsafeUtility.BeginSampleWithMetadata(marker.Handle, 1, data); } } }