Android收集Log文件并显示在UGUI
来源:互联网 发布:知天命尽人事下一句 编辑:程序博客网 时间:2024/06/07 10:37
吃水不忘wa井人。。。
http://www.xuanyusong.com/archives/2477
效果图
突然发现显示的信息好像不完整。。。手机上的没有定位到哪里出错…先分享一下吧
using UnityEngine;using System.Collections.Generic;using System.IO;using System.Text;using UnityEngine.UI;public class OutLog : MonoBehaviour{ List<string> mLines = new List<string>(); List<string> mWriteTxt = new List<string>(); private string outpath; Text logText; RectTransform rt; public float maxHeight = 100; VerticalLayoutGroup layout; void Start() { logText = GetComponentInChildren<Text>(); rt = logText.GetComponent<RectTransform>().parent.GetComponent<RectTransform>(); layout = rt.GetComponent<VerticalLayoutGroup>(); //Application.persistentDataPath Unity中只有这个路径是既可以读也可以写的。 outpath = Application.persistentDataPath + "/outLog.txt"; if (File.Exists(outpath)) //每次启动客户端删除之前保存的Log { File.Delete(outpath); } Application.logMessageReceived += HandleLog; //在这里做一个Log的监听 } void Update() { if (mWriteTxt.Count > 0) //因为写入文件的操作必须在主线程中完成,所以在Update中写入文件。 { string[] temp = mWriteTxt.ToArray(); foreach (string t in temp) { using (StreamWriter writer = new StreamWriter(outpath, true, Encoding.UTF8)) { writer.WriteLine(t); } mWriteTxt.Remove(t); } } if (mLines.Count > 0)//显示日志的条件。。。 { ShowLogToText(); } Test();//测试效果 } private static void Test() { if (Input.GetMouseButtonDown(0)) { int r = Random.Range(0, 2); if (r == 0) { Debug.LogError("FDSFS"); int[] test = new int[1]; test[2] = 0; } else if (r == 1) Debug.LogError("A"); } } void ShowLogToText() { List<RectTransform> allCloneRt = new List<RectTransform>(); RectTransform cloneRt; for (int i = 0, imax = mLines.Count; i < imax; ++i) { cloneRt = Instantiate(logText, rt).GetComponent<RectTransform>(); allCloneRt.Add(cloneRt); cloneRt.GetComponent<Text>().text = mLines[i]; } mLines.Clear();//清空 LayoutRebuilder.ForceRebuildLayoutImmediate(rt);//刷新,获取recttransform的最新信息以便于Layout布局 for (int i = 0; i < allCloneRt.Count; i++)//计算content的高度 { maxHeight += allCloneRt[i].sizeDelta.y + layout.spacing; } Vector2 pos = rt.sizeDelta; pos.y = maxHeight; rt.sizeDelta = pos; } void HandleLog(string logString, string stackTrace, LogType type) { mWriteTxt.Add(logString); if (type == LogType.Error || type == LogType.Exception) { Log(logString); Log(stackTrace); } } //这里我把错误的信息保存起来,用来输出在手机屏幕上 void Log(params object[] objs) { string text = ""; for (int i = 0; i < objs.Length; ++i) { if (i == 0) { text += objs[i].ToString(); } else { text += ", " + objs[i].ToString(); } } if (Application.isPlaying) { if (mLines.Count > 20) { mLines.RemoveAt(0); } mLines.Add(text); } }}
0 0
- Android收集Log文件并显示在UGUI
- android日志服务,将日志记录在log文件中并每天生成一个日志文件
- android读取工程里文件并显示在界面
- Unity3D研究院之IOS&Android收集Log文件
- Unity3D研究院之IOS&Android收集Log文件(六十二)
- Unity3D研究院之IOS&Android收集Log文件(六十二)
- Unity3D研究院之IOS&Android收集Log文件
- Unity3D研究院之IOS&Android收集Log文件
- 读取文件夹内容并显示到UGUI
- Android在sd卡生成log文件
- 优化Android Log类,并保存日志内容至文件
- android 收集错误log日志,并保存到sd卡上的实用类
- 读取.txt文件并在页面显示
- android的Log输出在logCat不显示
- UGUI中的Panel显示在最前面
- android学习笔记(一) 遍历SD卡中所有文件并在listview中显示
- Android下载文件显示到ImageView并保存在手机SD卡
- Android高德地图开发--读取解析KML文件并显示在地图上
- solr在windows下的安装及配置
- Hibernate 多字段distinct查询
- Ubuntu——grub rescue 主引导修复
- docker 新机器环境配置
- android 5.0后矢量图形
- Android收集Log文件并显示在UGUI
- 关于内存泄漏,还有哪些是你不知道的?
- Java编译的编码问题
- python单元测试
- CodeForces 650 B.Image Preview(二分)
- RabbitMQ的几种应用场景
- Weblogic的三种部署方式
- C与C++中IO流的比较
- 正则表达式基础知识