IOS and Android--------OutLog

如果你是在IOS平台,强烈建议把PlayerSetting里面的Script Call Optimization设置成Slow and Safe,这样比如遇到空指针 或者 数组越界这样的错误,程序是不会直接闪退的。(Android上不用设置)这里我创造一个数组越界的错误。

void Start () {
int []test = new int[1];
test[2] = 0;
}

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Text;

public class ZYOutLog : MonoBehaviour
{
static List<string> mLines = new List<string>();
static List<string> mWriteTxt = new List<string>();
private string outpath;
void Start()
{
//Application.persistentDataPath Unity中只有这个路径是既可以读也可以写的。
outpath = Application.persistentDataPath + "/outLog.txt";
//每次启动客户端删除之前保存的Log
if (System.IO.File.Exists(outpath))
{
File.Delete(outpath);
}
//在这里做一个Log的监听
Application.RegisterLogCallback(HandleLog);
//一个输出
Debug.Log("yufei");
}

void Update()
{
//因为写入文件的操作必须在主线程中完成,所以在Update中哦给你写入文件。
if (mWriteTxt.Count > 0)
{
string[] temp = mWriteTxt.ToArray();
foreach (string t in temp)
{
using (StreamWriter writer = new StreamWriter(outpath, true, Encoding.UTF8))
{
writer.WriteLine(t);
}
mWriteTxt.Remove(t);
}
}
}

void HandleLog(string logString, string stackTrace, LogType type)
{
mWriteTxt.Add(logString);
if (type == LogType.Error || type == LogType.Exception)
{
Log(logString);
Log(stackTrace);
}
}

//这里我把错误的信息保存起来,用来输出在手机屏幕上
static public 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);

}
}

void OnGUI()
{
GUI.color = Color.red;

for (int i = 0, imax = mLines.Count; i < imax; ++i)
{
GUILayout.Label(mLines[i]);
}
}
}

时间: 2024-08-09 10:43:57

IOS and Android--------OutLog的相关文章

基于IOS和Android设备MDM技术方案服务价格

导读:前段时间 www.mbaike.net 博客被恶意攻击,导致程序崩溃,目前已经替换了以前的Wordpress程序,现提供IOS和Android版本MDM的代码和相关文档咨询服务. 一.IOS版MDM服务内容及价格: 套餐一:IOS端MDM Server代码(提供MDM Server端的代码和部署文档,不含后期技术支持) 3000元套餐二:IOS端MDM开发技术顾问(提供MDM开发的顾问服务,协助理解MDM原理流程及搭建MDM Server工作的咨询) 1500元套餐三:IOS端MDM全部服

ios和android适配

一些情况下对非可点击元素如(label,span)监听click事件,ios下不会触发 解决方案:css增加cursor:pointer; 三星手机遮罩层下的input.select.a等元素可以被点击和focus(点击穿透) 问题发现于三星手机,这个在特定需求下才会有,因此如果没有类似问题的可以不看.首先需求是浮层操作,在三星上被遮罩的元素依然可以获取focus.click.change),有两种解决方案: 1.是通过层显示以后加入对应的class名控制,截断显示层下方可获取焦点元素的事件获取

「Unity」与iOS、Android平台的整合:3、导出的Android-Studio工程

本文属于「Unity与iOS.Android平台的整合」系列文章之一,转载请注明出处. Unity默认导出的是Android-Eclipse工程,毕竟Eclipse for Android开发在近一两年才开始没落,用户量还是非常巨大的. 个人认为AndroidStudio非常好用,能轻易解决很多Eclipse解决不了或者很难解决的问题. 所以我将Unity导出的Andoid工程分为Eclipse和AndroidStudio两部分. 不过我之后的相关内容都会使用AndroidStudio,希望依然

Unity3D 语音接入适用于pc、ios、android

语音接入 考虑到pc与ios.android三端的混服情况,所有录音的格式均存储为mp3格式,也是unity推荐的音频文件方式 前提:目前比较成熟的语音模块由科大讯飞平台提供的,目前我们需要的功能是把语音转化成文字,因此我们只需要下载相应的语音识别模块就可以了. 1)进入科大讯飞官网下载相应平台的sdk,目前我们只需要免费的语音识别就可以了,要创建相应的应用才能下载,里面的demo提供边录音边翻译的功能. 2)pc端的没有提供边录边能,要想在pc版进行录音可引入第三方库进行录音或者使用unity

基于iOS,Android的服务器证书失效检测

1.前言 在目前的iOS,Android手机上,当手机应用进行SSL通信时,手机端默认是不会进行服务器证书是否失效的监测. 在iOS上,系统是会定期获取所访问服务器的证书信息然后出存在本地. 在Android端,系统是不会进行任何服务器证书的监测. 2.影响 如果应用在与服务器进行SSL通信时不进行任何的证书有效性检测会造成用户信息泄漏等安全问题. 3.解决方法 服务器证书有效性检测有两种方法,CRL检测和OCSP检测. OCSP检测主要的好处是时效性更有效率.本文主要从OCSP角度介绍实现方法

ios及android两个平台下x264编译脚本

今年做了一些音视频编解码工作,此前做图形.图像类工作多一些,做了音视频编解码才知道,这项工作还是很有趣.很神奇的.比如采集几十M的视频数据,经过编码存储后,文件体积仅仅有几十K大小,这当中就需要x264来发挥神奇了.下面将手机端ios及android两个平台下x264编译脚本分享出来,希望对正在做相关工作的同学有帮助.x264源码地址:http://www.videolan.org/developers/x264.html 1. ios平台下x264编译.这个编译脚本修改自:https://gi

JS判断是否是微信页面,判断手机操作系统(ios或android)并跳转到不同下载页面

JS判断客户端是否是iOS或者Android 参考:http://caibaojian.com/browser-ios-or-android.html 1 function is_weixin() { 2 var ua = window.navigator.userAgent.toLowerCase(); 3 if (ua.match(/MicroMessenger/i) == 'micromessenger') { 4 return true; 5 } else { 6 return fals

H5 JS判断客户端是否是iOS或者Android手机移动端

<script type="text/javascript"> var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 alert('是否是Android:'+isAndroi

《React-Native系列》19、 ListView组件之上拉刷新(iOS和Android通用)

ReactNative提供了RefreshControl下拉刷新组件,但是没有提供上拉刷新组件,上拉刷新在App中是很常用的. 今天我们来实现一个iOS和Android通用的上拉刷新功能. 下面简要介绍下我实现的思路. 如果你对ListView的基础知识不是很清楚,建议先移步:<React-Native系列>16. RN组件之ListView 思路: 1.常量定义: const moreText = "加载完毕"; //foot显示的文案 //页码 var pageNum

「Unity」与iOS、Android平台的整合:2、导出的Android-Eclipse工程

本文属于「Unity与iOS.Android平台的整合」系列文章之一,转载请注明出处. Unity默认导出的是Android-Eclipse工程,毕竟Eclipse for Android开发在近一两年才开始没落,用户量还是非常巨大的. 个人认为AndroidStudio非常好用,能轻易解决很多Eclipse解决不了或者很难解决的问题. 所以我将Unity导出的Andoid工程分为Eclipse和AndroidStudio两部分. 不过我之后的相关内容都会使用AndroidStudio,希望依然