using unityengine;
using system.io;
using system;
using system.diagnostics;
using debug = unityengine.debug;
public class debugtrace
private filestream filestream;
private streamwriter streamwriter;
private bool iseditorcreate = false ; //是否在編輯器中也產生日誌檔案
private int showframes = 1000 ; //列印所有
# region instance
private static readonly object obj = new object ;
private static debugtrace m_instance;
public static debugtrace instance
getif (m_instance == null )
lock (obj)
if (m_instance == null )
m_instance = new debugtrace;
return m_instance;
# endregion
private debugtrace ( )
/// 開啟跟蹤日誌資訊
public void starttrace ( )
if (debug.unitylogger.logenabled)
//在編輯器中設定iseditorcreate==true時候產生日誌
if (iseditorcreate)
createoutlog;
//不在編輯器中 是否產生日誌由 debug.unitylogger.logenabled 控制
else
createoutlog;
// debug.log(stacktrace); //打包後staacktrace為空 所以要自己實現
if (type != logtype.warning)
// stacktrace stack = new stacktrace(1,true); //跳過第二?(1)幀
stacktrace stack = new stacktrace( true ); //捕獲所有幀
string stackstr = string .empty;
int framecount = stack.framecount; //幀數
if ( this .showframes > framecount) this .showframes = framecount; //如果幀數大於總幀速 設定一下
//自定義輸出幀數,可以自行試試檢視效果
for ( int i = stack.framecount - this .showframes; i < stack.framecount; i++)
stackframe sf = stack.getframe(i); //獲取當前幀資訊
// 1:第一種 ps:getfilelinenumber 在發布打包後獲取不到
stackstr += "at [" + sf.getmethod.declaringtype.fullname +
"." + sf.getmethod.name +
".line:" + sf.getfilelinenumber + "]n " ;
//或者直接呼叫tostring 顯示資料過多 且打包後有些資料獲取不到
// stackstr += sf.tostring;
//或者 stackstr = stack.tostring;
string content = string .format( "time: logtype: logstring: nstacktrace: " ,
datetime.now.tostring( "hh:mm:ss" ), type, logstring, stackstr, "rn" );
streamwriter.writeline(content);
streamwriter.flush;
private void createoutlog ( )
filestream = new filestream(path, filemode.openorcreate, fileaccess.readwrite);
streamwriter = new streamwriter(filestream);
/// 關閉跟蹤日誌資訊
public void closetrace ( )
streamwriter.dispose;
streamwriter.close;
filestream.dispose;
filestream.close;
/// 設定選項
/// 是否記錄日誌
/// 是否顯示所有堆疊幀 預設只顯示當前幀 如果設為0 則顯示所有幀
/// 過濾 預設log級別以上
/// 是否在編輯器中產生日誌記錄 預設不需要
public void setlogoptions ( bool logenable, int showframs = 1 , logtype filterlogtype = logtype.log, bool editorcreate = false )
debug.unitylogger.logenabled = logenable;
debug.unitylogger.filterlogtype = filterlogtype;
iseditorcreate = editorcreate;
this .showframes = showframs == 0 ? 1000 : showframs;
Unity 日誌列印工具
一 日誌工具功能 封裝debug類,需要實現功能 1.控制所有日誌是否列印 2.除了log,warning,error外,給更多日誌種類 不同顏色 3.格式化列印日誌 4.不定引數,自動拼接成字串 5.上傳日誌到伺服器 二 logger類 1.控制日誌列印 封裝debug中關於log的方法 使用靜態...
Unity 資料儲存自總
資料傳輸要 using system.io i input,o output io流 指資料輸入輸出流 傳輸txt要 using system.text 處理資料夾 類名 directory str n 預設情況下 符號在字串表示轉義符 str n 如果在前面加 符號,那麼 將作為字元存在,不代表轉...
unity自義定搖桿
寫在前面,搖桿控制人物的移動,攝像機跟隨人物移動,且滑動螢幕可以控制攝像機觀察人物的角度。需要考慮的問題 1 搖桿滑動角度的計算。2 搖桿控制效果程度的計算 即 搖桿距離中心位置越遠人物的移動速度越快的效果,當然這裡是有個上限值的,就是搖桿滑動到極限的情況,這種情況人物的移動最快 3 如何將搖桿的滑...