封裝系統自帶的Debug

2021-09-06 20:29:48 字數 3063 閱讀 1786

unity3d的debug.log函式用於列印日誌,一般專案中都會對其作如下兩件事情:

(1)希望有乙個總的開關來控制整個遊戲中日誌的列印與否;

(2)有的系統會將log封一層並新增統一的標記,比如skill模組希望列印的日誌格式為[skill]***。

對於第乙個問題,unity沒有統一的開關用於控制日誌的輸出。對於第二個問題,將log用乙個函式封一層,那麼在除錯的時候雙擊console裡面的堆疊時將不能跳轉到相應的邏輯塊,很麻煩。

怎麼解決呢,有乙個辦法,就是將debug.log封裝進乙個dll,話不多說**如下所示:

using

system;

using

unityengine;

namespace

mydebug

static

public

void log(object

message, unityengine.object context)

}static

public

void logwarning(object

message)

static

public

void logwarning(object

message, unityengine.object context)

}static

public

void logerror(object

message)

static

public

void logerror(object

message, unityengine.object context)

}public

static

void

logexception(exception exception)

public

static

void

logexception(exception exception, unityengine.object context)

public

static

void

drawline(vector3 start, vector3 end)

public

static

void

drawline(vector3 start, vector3 end, color color)

public

static

void drawline(vector3 start, vector3 end, color color, float

duration)

public

static

void drawline(vector3 start, vector3 end, color color, float duration, bool

depthtest)

public

static

void

drawray(vector3 start, vector3 dir)

public

static

void

drawray(vector3 start, vector3 dir, color color)

public

static

void drawray(vector3 start, vector3 dir, color color, float

duration)

public

static

void drawray(vector3 start, vector3 dir, color color, float duration, bool

depthtest)

public

static

void

break()

public

static

void

cleardeveloperconsole()

public

static

void

debugbreak()}}

在遊戲中有兩種用法:

using debug = mydebug.debug;
然後用法和預設的一樣,或者直接使用:

mydebug.debug.log("

something

");

同樣的,對於第二個問題,可以將skill系統的log進行類似的封裝:

using

system;

using

system.collections.generic;

using

system.text;

namespace

mydebug

static

public

void log(object

message, unityengine.object context)

}static

public

void logwarning(object

message)

static

public

void logwarning(object

message, unityengine.object context)

}static

public

void logerror(object

message)

static

public

void logerror(object

message, unityengine.object context)}}

}

注意,在編譯庫檔案的時候,需要手動地設定工程屬性中的目標框架,如下圖所示:

將上述**編譯到mydebug.dll中,並將此dll放入到遊戲工程,那麼就可以在遊戲中自由使用log功能,並且有統一開關來控制是否列印日誌,而且可以進行直接的堆疊跳轉了。

iOS 系統自帶xml解析(自定義封裝)

說實話,神他麼用過xml解析,只是調了幾次這種介面,每次都要寫,好麻煩,自己封裝一下,以後會有用吧。首先是基類 請求資料的自定義 委託處理 在文件開始的時候觸發 void parserdidstartdocument nsxmlparser parser 解析起始標記 void parser nsx...

Unity 將Debug封裝成dll

在開發過程中避免不了各種debug除錯,在打包的時候為了減少效能消耗,需要將所有的debug注釋或刪除掉。如果再次調整則需要取消注釋,來回折騰很是麻煩。之前嘗試將debug簡單的封裝到乙個類,利用乙個bool控制是否啟用debug功能,正常開發是只需將bool值設為true,打包時設為false即可...

UITableViewCell系統自帶的四種樣式

系統自己的uitableviewcell樣式有四種 default樣式 左邊乙個顯示的imageview,乙個標題textlabel,沒有detailtextlabel。subtitle樣式 左邊乙個顯示的imageview,上邊乙個主標題textlabel,乙個副標題detailtextlabel...