如果 unity 老是报错: A Native Collection has not been disposed, resulting in a memory leak. Enable Full StackTraces
此时需要打开泄漏检查的全堆栈显示(比较耗费性能,平时不要打开)
方法如下:在Editor中加入一个类文件,内容如下:
using System.Linq;
using System.Collections;
using UnityEngine;
using UnityEditor;
using Unity.Collections;
namespace Assets.Scripts.Editor
{
public class Leak Detection Mode
{
[MenuItem("Custom/Show Leak Detection Mode")]
static void ShowLeakDetection()
{
EditorUtility.DisplayDialog("内存泄漏检测设置", string.Format("NativeLeakDetection.Mode:{0}", NativeLeakDetection.Mode.ToString()), "OK");
}
[MenuItem("Custom/Leak Detection Enabled")]
static void LeakDetectionEnabled()
{
NativeLeakDetection.Mode = NativeLeakDetectionMode.Enabled;
}
[MenuItem("Custom/Leak Detection Enabled", true)] //第二个参数表示本函数是菜单是否可用的验证函数
static bool ValidateLeakDetectionEnabled()
{
return NativeLeakDetection.Mode != NativeLeakDetectionMode.Enabled;
}
[MenuItem("Custom/Leak Detection Enabled With StackTrace")]
static void LeakDetectionEnabledWithStackTrace()
{
NativeLeakDetection.Mode = NativeLeakDetectionMode.EnabledWithStackTrace;
}
[MenuItem("Custom/Leak Detection Enabled With StackTrace", true)] //第二个参数表示本函数是菜单是否可用的验证函数
static bool ValidateLeakDetectionEnabledWithStackTrace()
{
return NativeLeakDetection.Mode != NativeLeakDetectionMode.EnabledWithStackTrace;
}
[MenuItem("Custom/Leak Detection Disable")]
static void LeakDetectionDisable()
{
NativeLeakDetection.Mode = NativeLeakDetectionMode.Disabled;
}
[MenuItem("Custom/Leak Detection Disable", true)] //第二个参数表示本函数是菜单是否可用的验证函数
static bool ValidateLeakDetectionDisable()
{
return NativeLeakDetection.Mode != NativeLeakDetectionMode.Disabled;
}
}
}
这样就给Unity编辑器的菜单里增加 Custom 菜单,可随时启用、禁用内存检测。文章来源:https://www.toymoban.com/news/detail-478639.html
参考来源: 【修复】A Native Collection has not been disposed, resulting in a memory文章来源地址https://www.toymoban.com/news/detail-478639.html
到了这里,关于[unity] Enable Full StackTraces 的方法,打开泄漏检查的全堆栈显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!