【无标题】

如果 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 MyJob
    {
        [MenuItem("Custom/MyJobs/Show Leak Detection Mode")]
        static void ShowLeakDetection()
        {
            EditorUtility.DisplayDialog("内存泄漏检测设置", string.Format("NativeLeakDetection.Mode:{0}", NativeLeakDetection.Mode.ToString()), "OK");
        }

        [MenuItem("Custom/MyJobs/Leak Detection Enabled")]
        static void LeakDetectionEnabled()
        {
            NativeLeakDetection.Mode = NativeLeakDetectionMode.Enabled;
        }

        [MenuItem("Custom/MyJobs/Leak Detection Enabled", true)]  //第二个参数表示本函数是菜单是否可用的验证函数
        static bool ValidateLeakDetectionEnabled()
        {
            return NativeLeakDetection.Mode != NativeLeakDetectionMode.Enabled;
        }

        [MenuItem("Custom/MyJobs/Leak Detection Enabled With StackTrace")]
        static void LeakDetectionEnabledWithStackTrace()
        {
            NativeLeakDetection.Mode = NativeLeakDetectionMode.EnabledWithStackTrace;
        }

        [MenuItem("Custom/MyJobs/Leak Detection Enabled With StackTrace", true)]  //第二个参数表示本函数是菜单是否可用的验证函数
        static bool ValidateLeakDetectionEnabledWithStackTrace()
        {
            return NativeLeakDetection.Mode != NativeLeakDetectionMode.EnabledWithStackTrace;
        }

        [MenuItem("Custom/MyJobs/Leak Detection Disable")]
        static void LeakDetectionDisable()
        {
            NativeLeakDetection.Mode = NativeLeakDetectionMode.Disabled;
        }

        [MenuItem("Custom/MyJobs/Leak Detection Disable", true)]  //第二个参数表示本函数是菜单是否可用的验证函数
        static bool ValidateLeakDetectionDisable()
        {
            return NativeLeakDetection.Mode != NativeLeakDetectionMode.Disabled;
        }
    }
}

这样就给Unity编辑器的菜单里增加 Custom/MyJobs 菜单,可随时启用、禁用内存检测。

参考来源: 【修复】A Native Collection has not been disposed, resulting in a memory leak._VirtualCreator的博客-CSDN博客

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值