免费A级毛片无码专区网站-成人国产精品视频一区二区-啊 日出水了 用力乖乖在线-国产黑色丝袜在线观看下-天天操美女夜夜操美女-日韩网站在线观看中文字幕-AV高清hd片XXX国产-亚洲av中文字字幕乱码综合-搬开女人下面使劲插视频

引擎之旅 Chapter.4 日志系統(tǒng)

關(guān)于近段時間為何沒有更新的解釋:Find a new job.
目錄
  • 引言
  • 日志語句的分類
  • 控制臺窗體 和 VSOutput Tab的日志打印
  • 存儲至特定的文件中
  • 展示堆棧信息
引言一般來說 , 一個優(yōu)質(zhì)的商業(yè)級別的游戲本質(zhì)上就是一個復雜龐大的軟件系統(tǒng) 。在龐大系統(tǒng)的開發(fā)過程中難免會出現(xiàn)錯誤 。為了排查錯誤、校驗代碼的正確性 , 游戲引擎一般會提供一些調(diào)試和開發(fā)工具 , 一般有如下幾個:
  • 日志及代碼追蹤:日志系統(tǒng)一般提供向控制臺等頁面打印字符串的功能;在打印中也能夠清晰的顯示調(diào)用的堆棧信息 , 以便于定位代碼錯誤的位置 。
  • 調(diào)試繪圖功能:引擎會提供在游戲場景中繪制輔助線的功能 , 這些輔助線能清晰的表示范圍、方向等信息以供游戲開發(fā)者進行調(diào)試 。
  • 內(nèi)置菜單:游戲編輯器的一些全局設置 , 通過不同的設置 , 方便游戲開發(fā)者對特定渲染、邏輯等進行調(diào)試 。
  • 內(nèi)置控制臺:對于游戲引擎來說 , 項目為非控制臺程序 , 因此我們無法用簡單的使用printf方法將日志輸出至控制臺 。內(nèi)置控制臺就是游戲編輯器中收集和顯示日志的窗體 。
  • 性能剖析與統(tǒng)計:方便游戲開發(fā)者定位性能瓶頸(一個重要的模塊)
當然 , 僅僅這一章節(jié)無法去完成對這些調(diào)試工具的闡述 。本文中的日志系統(tǒng)主要實現(xiàn)了日志及代碼堆棧信息的輸出功能(上述的第一點) , 其他部分的內(nèi)容后續(xù)在將其慢慢的完善 。本章中的日志系統(tǒng)主要實現(xiàn)一下幾點功能:
  • 日志語句可分類 , 且不同的分類有相關(guān)顏色的提示 。
  • 日志可打印到控制臺窗體、Vistual Studio輸出框 。
  • 日志可存儲至特定的日志文件中 。
  • 日志語句可展示相關(guān)的堆棧信息 。
顯示效果如下:
  • 不顯示相關(guān)堆棧信息
    引擎之旅 Chapter.4 日志系統(tǒng)

    文章插圖
  • 顯示相關(guān)堆棧信息
    引擎之旅 Chapter.4 日志系統(tǒng)

    文章插圖
日志語句的分類將日志語句分類可以讓開發(fā)者打印不同重要性的Log 。比如Unity編輯器中的Console將日志語句分為了:Log、Warn、Error三個部分 。在TurboEngine的設計中 , 我將日志分類寫為一個枚舉類 , 并將不同的類型在二進制不同的位中岔開 , 方便篩選 。
//日志語句重要性等級enum LogImportantLevel : int{ CodeTrace = 0b00001,//最低級 , 用于記錄代碼執(zhí)行軌跡(白) Info = 0b00010,//常規(guī) , 顯示日志消息(綠) Warn = 0b00100,//較高級 , 用于日志警告信息(警告) Error = 0b01000,//高級 , 用于日志錯誤信息(錯誤) Critiacal = 0b10000,//最高級 , 用于關(guān)鍵日志信息(關(guān)鍵信息)};控制臺窗體 和 VSOutput Tab的日志打印這一部分很簡單 。將日志打印到Console和VS Output主要使用以下兩個函數(shù)
//to Consoleprintf(const char* format,...);//to VS OutputOutputDebugStringA(const char* lpOutputString);我一般喜歡將特定的功能封裝在自己的函數(shù)中 , 一方面可以作為將函數(shù)用自己的命名形式統(tǒng)一命名方便調(diào)用 。另一方面 , 我們需要對原生函數(shù)進行功能上的拓展 。

    經(jīng)驗總結(jié)擴展閱讀