unity 日誌級別 Unity 自定義日誌儲存

2021-10-17 06:23:17 字數 2926 閱讀 4867

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 如何將搖桿的滑...