Unity輸出帶點(diǎn)擊跳轉(zhuǎn)功能的Log實(shí)現(xiàn)技巧詳解
正文
在平常的Unity開(kāi)發(fā)過(guò)程中,可能會(huì)遇到如:
1.使用Debug.Log替代輸出異常信息;
2.調(diào)試代碼時(shí),源代碼在try{}代碼塊內(nèi)有較多或深層的調(diào)用;
3.想在輸出的Log中提示或是引導(dǎo)其他開(kāi)發(fā)人員打開(kāi)指定的腳本等情景。
在上述情景中,Debug.Log輸出的Log一般都是不帶點(diǎn)擊跳轉(zhuǎn)功能的,使得我們需要在長(zhǎng)長(zhǎng)的Log中尋找目標(biāo)文件,然后再對(duì)照著文件名,方法名在IDE中點(diǎn)開(kāi),并不是很方便。
不帶點(diǎn)擊跳轉(zhuǎn)的Log
public static void TestFunc() { try { TestCall_1("", 0); } catch (System.Exception e) { // 平時(shí)使用Debug輸出的Log是不帶點(diǎn)擊跳轉(zhuǎn)的 Debug.LogError(e.ToString()); } }
輸出結(jié)果
如果在try catch中做了很復(fù)雜的操作,這樣的Log將會(huì)又長(zhǎng)又亂
后來(lái)經(jīng)過(guò)反復(fù)比對(duì)帶點(diǎn)擊跳轉(zhuǎn)和不帶點(diǎn)擊跳轉(zhuǎn)的兩行Log,發(fā)現(xiàn)了Unity識(shí)別這種跳轉(zhuǎn)路徑的基本格式為:()[空格](at X:0),(空格不能省略)。因此只要把要跳轉(zhuǎn)的腳本路徑照這個(gè)格式封裝就能實(shí)現(xiàn)高亮點(diǎn)擊跳轉(zhuǎn)了。下面是演示代碼。
帶點(diǎn)擊跳轉(zhuǎn)的Log
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.Text.RegularExpressions; ???????public class TestEditor { [MenuItem("測(cè)試/打印異常")] public static void TestFunc() { try { TestCall_1("", 0); } catch (System.Exception e) { string output = "使Log帶跳轉(zhuǎn)功能 \n"; // 1.這是能被識(shí)別為帶點(diǎn)擊跳轉(zhuǎn)的格式:() (at XXX:0) output += "() (at X:0) \n"; // 2.可以是絕對(duì)路徑,但格式好像只能是.cs文件,若.cs文件不存在,則會(huì)在IDE中打開(kāi)一個(gè)新文檔 ? ? ? ? ? ? output += "() (at " + @"C:/Users/7_erQ/Desktop/test.cs" + ":0) \n"; ? ? ? ? ? ? // 3.用正則替換原Log為 XXX.xxx() (at XXX.cs:nnn)的格式,就能使Log帶跳轉(zhuǎn)功能了 ? ? ? ? ? ? // 原Log: ?at TestEditor.TestCall_4 (System.String arg1, System.Int32 arg2) [0x00001] in F:\WorkStation\CodeSpace\UnityProjects\AssetLinkMapDemo\Assets\Temp\Editor\TestEditor.cs:41 ? ? ? ? ? ? // 替換后: ?at TestEditor.TestCall_4 (System.String arg1, System.Int32 arg2) (at F:\WorkStation\CodeSpace\UnityProjects\AssetLinkMapDemo\Assets\Temp\Editor\TestEditor.cs:42) ? ? ? ? ? ? Regex reg = new Regex(@"\)\s\[0x[0-9,a-f]*\]\sin\s(.*:[0-9]*)\s"); ? ? ? ? ? ? output += reg.Replace(e.ToString(), ") (at $1) "); ? ? ? ? ? ? Debug.LogError(output); ? ? ? ? } ? ? } ? ? public static void TestCall_1(string arg1, int arg2) { ? ? ? ? TestCall_2(arg1, arg2); ? ? } ? ? public static void TestCall_2(string arg1, int arg2) { ? ? ? ? TestCall_3(arg1, arg2); ? ? } ? ? public static void TestCall_3(string arg1, int arg2) { ? ? ? ? TestCall_4(arg1, arg2); ? ? } ? ? public static void TestCall_4(string arg1, int arg2) { ? ? ? ? throw new System.Exception(); ? ? } }
輸出結(jié)果
帶點(diǎn)擊跳轉(zhuǎn)的Log
這樣就可以直接點(diǎn)開(kāi)定位到目標(biāo)文件和方法了 作者:7_erQ https://www.bilibili.com/read/cv15464238 出處:bilibili
以上就是Unity輸出帶點(diǎn)擊跳轉(zhuǎn)功能的Log實(shí)現(xiàn)技巧詳解的詳細(xì)內(nèi)容,更多關(guān)于Unity輸出點(diǎn)擊跳轉(zhuǎn)Log的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- Unity的IPreprocessBuild實(shí)用案例深入解析
- Unity的IFilterBuildAssemblies實(shí)用案例深入解析
- 一文詳解Unity3D?AudioSource組件使用示例
- Unity InputFiled TMP屬性和各種監(jiān)聽(tīng)示例詳解
- Unity TextMeshPro實(shí)現(xiàn)富文本超鏈接默認(rèn)字體追加字體
- Unity技術(shù)手冊(cè)之Button按鈕使用實(shí)例詳解
- Unity技術(shù)手冊(cè)之Toggle切換使用實(shí)例
- Unity技術(shù)手冊(cè)之Slider滑動(dòng)器使用實(shí)例詳解
- Unity的IPostprocessBuild實(shí)用案例深入解析
相關(guān)文章
C#連接Oracle數(shù)據(jù)庫(kù)字符串(引入DLL)的方式
這篇文章主要給大家介紹了關(guān)于C#連接Oracle數(shù)據(jù)庫(kù)字符串(引入DLL)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08C#使用FileSystemWatcher控件實(shí)現(xiàn)的文件監(jiān)控功能示例
這篇文章主要介紹了C#使用FileSystemWatcher控件實(shí)現(xiàn)的文件監(jiān)控功能,結(jié)合實(shí)例形式分析了C# FileSystemWatcher組件的功能及監(jiān)控文件更改情況的具體使用技巧,需要的朋友可以參考下2017-08-08C#使用CancellationTokenSource 取消 Task的方法
因?yàn)樯婕暗搅巳粘=?jīng)常會(huì)碰到的取消任務(wù)操作,本文主要介紹了C#使用CancellationTokenSource 取消 Task,文中通過(guò)代碼介紹的非常詳細(xì),感興趣的可以了解一下2022-02-02基于NPOI用C#開(kāi)發(fā)的Excel以及表格設(shè)置
這篇文章主要為大家詳細(xì)介紹了基于NPOI用C#開(kāi)發(fā)的Excel以及表格設(shè)置,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02C# SDK實(shí)現(xiàn)百度云OCR的文字識(shí)別功能
這篇文章主要為大家詳細(xì)介紹了C# SDK實(shí)現(xiàn)百度云OCR的文字識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11C#實(shí)現(xiàn)讀寫(xiě)ini文件類實(shí)例
這篇文章主要介紹了C#實(shí)現(xiàn)讀寫(xiě)ini文件類,實(shí)例分析了C#實(shí)現(xiàn)針對(duì)ini文件的讀、寫(xiě)、刪除等操作的常用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03WPF實(shí)現(xiàn)動(dòng)畫(huà)效果(六)之路徑動(dòng)畫(huà)
這篇文章介紹了WPF實(shí)現(xiàn)動(dòng)畫(huà)效果之路徑動(dòng)畫(huà),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06C# WPF上位機(jī)實(shí)現(xiàn)和下位機(jī)TCP通訊的方法
這篇文章主要介紹了C# WPF上位機(jī)實(shí)現(xiàn)和下位機(jī)TCP通訊的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03