手机上可以把一段时间的profiler日志保存在本地,接着在手机里把文件取出来就可以在电脑上查看了,很方便,上代码,在需要保存手机Profiler日志的时候调用 ProfilerUtils.BeginRecord();并且我已经封装好了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
using System; using System.Collections; using UnityEngine; using UnityEngine.Profiling; public class ProfilerUtils { static private GameObject profilerGameObject; static ProfilerUtils(){ profilerGameObject = new GameObject("#Profiler#"); UnityEngine.Object.DontDestroyOnLoad(profilerGameObject); } static public void BeginRecord() { if(!profilerGameObject.GetComponent<InternalBehaviour>()){ profilerGameObject.AddComponent<InternalBehaviour>(); } } class InternalBehaviour : MonoBehaviour { private string m_DebugInfo = String.Empty; private void OnGUI() { GUILayout.Label(String.Format("<size=50>{0}</size>", m_DebugInfo)); } IEnumerator Start() { for (int i = 5; i > 0; i--) { m_DebugInfo = string.Format("<color=blue>{0}s后开始保存Profiler日志</color>", i); yield return new WaitForSeconds(1); } string file = Application.persistentDataPath + "/profiler_" + DateTime.Now.ToString("yyyyMMddhhmmss") +".log"; Profiler.logFile = file; Profiler.enabled = true; Profiler.enableBinaryLog = true; for (int i = 5; i > 0; i--) { m_DebugInfo = string.Format("<color=red>{0}s后结束保存Profiler日志</color>", i); yield return new WaitForSeconds(1); } Profiler.enableBinaryLog = false; m_DebugInfo = string.Format("保存完毕:{0}", file); yield return new WaitForSeconds(10); Destroy(this); } } } |
最后在Profier窗口中点击load载入即可,如果你用的unity版本比较老,并没有load按钮,调用Proilfer.AddframesFromeFile也可以载入profiler信息。
- 本文固定链接: https://www.xuanyusong.com/archives/4551
- 转载请注明: 雨松MOMO 于 雨松MOMO程序研究院 发表
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!
Profiler.enableBinaryLog = true; 这个要设置为false,然后用程序setframe,不然内存很快就不够用了
没有看明白怎么使用啊
真机上无法保存 profiler 日志,显示 Profiler is not supported in this build 错误。
打包的时候要勾选 development build
好的,多谢!!!