コード例 #1
0
        /// <summary>
        /// 将内存窗口下的数据进行过滤,存储在 MemoryElement 实例中
        /// </summary>
        /// <param name="filterDepth">过滤深度</param>
        /// <param name="filterSize">过滤内存大小</param>
        public static MemoryElement GetMemoryDetail(int filterDepth, float filterSize)
        {
            if (!ConfirmWindow(ProfilerArea.Memory))
            {
                return(null);
            }

            if (IsWindowEmpty())
            {
                return(null);
            }

            // 得到内存窗口下的内存数据记录类
            CustomType memoryList = new CustomType(window.PrivateInstanceField("m_MemoryListView"));

            if (memoryList == null || memoryList.InnerObject == null)
            {
                UnityEngine.Debug.LogError("m_MemoryListView获取失败,请检查Unity版本");
                return(null);
            }

            var root = memoryList.PrivateInstanceField("m_Root");

            return(root != null?MemoryElement.Create(new CustomType(root), 0, filterDepth, filterSize) : null);
        }
コード例 #2
0
        /// <summary>
        /// 写入内存数据
        /// </summary>
        public static void WriteMemoryDetail(StreamWriter writer, MemoryElement root)
        {
            if (root == null)
            {
                return;
            }

            writer.WriteLine(root.ToString());
            foreach (var child in root.children)
            {
                WriteMemoryDetail(writer, child);
            }
        }