Unity-Console 窗口
Console?窗口顯示 Unity 生成的錯(cuò)誤、警告和其他消息。
還可以使用?Debug.Log、Debug.LogWarning?和?Debug.LogError?函數(shù),在控制臺(tái)中顯示自定義的消息。
要從 Unity 的主菜單中打開控制臺(tái),請選擇?Window > General > Console。

A.?Console 窗口菜單包含了用于打開日志文件、控制列表中顯示的消息數(shù)量以及設(shè)置堆棧跟蹤的選項(xiàng)。
B.?Console 工具欄包含用于控制顯示的消息數(shù)量以及搜索和過濾消息的選項(xiàng)。
C.?控制臺(tái)列表針對每條記錄的消息顯示一個(gè)條目。
選擇一條消息可在詳細(xì)信息區(qū)域中顯示其完整文本。您可以選擇在這里顯示每條消息的多少行。
請參閱下面的調(diào)整行計(jì)數(shù),以獲取更多信息。
D.?詳細(xì)信息區(qū)域顯示所選消息的全文。
如果啟用了堆棧跟蹤,那么對代碼文件中特定行的引用將在此處顯示為可點(diǎn)擊的鏈接。
Console 工具欄選項(xiàng)
Console 窗口的工具欄包含用于控制顯示的消息數(shù)量以及搜索和過濾消息的選項(xiàng)。
選項(xiàng):????????????????????????????????????????????????????????????????????????????????功能:
Clear??????????????????????????????????????移除從代碼中生成的所有消息,但會(huì)保留編譯器錯(cuò)誤。
Collapse????????????????????????????????僅顯示重復(fù)消息的第一次出現(xiàn)。有時(shí)在每次幀更新時(shí)會(huì)生成的運(yùn)行時(shí)錯(cuò)誤(例如 null 引用),此選項(xiàng)在這種情況下非常有用。
Clear On Play????????????????????????每當(dāng)進(jìn)入播放模式時(shí)就會(huì)自動(dòng)清空控制臺(tái)。
Clear on Build???????????????????????在構(gòu)建項(xiàng)目時(shí)清空控制臺(tái)。
Error Pause???????????????????????????只要從腳本中調(diào)用了?Debug.LogError
?便暫?;胤拧H绻M趫?zhí)行中的特定時(shí)刻凍結(jié)回放并檢查場景,那么此選項(xiàng)很有用。當(dāng)調(diào)用?Debug.Log
?時(shí),此選項(xiàng)不會(huì)暫?;胤?。
[Attach-to-Player]?????????????????打開一個(gè)下拉菜單,其中包含的選項(xiàng)可用于連接到運(yùn)行在遠(yuǎn)程設(shè)備上的開發(fā)版以及在控制臺(tái)中顯示其播放器日志。此選項(xiàng)被標(biāo)記為目標(biāo)開發(fā)版的名稱(也就是 Console 窗口中顯示的日志的版本)。如果控制臺(tái)未連接到遠(yuǎn)程版本,則標(biāo)記為?Editor,以表明 Console 窗口中顯示的日志是來自本地 Unity Editor。
????????Player Logging????????????如果控制臺(tái)連接到遠(yuǎn)程開發(fā)版,則此選項(xiàng)將對版本啟用播放器日志記錄。禁用此選項(xiàng)將暫停日志記錄,但控制臺(tái)仍將連接到目標(biāo)版本。禁用此選項(xiàng)還會(huì)隱藏此下拉菜單中的其余選項(xiàng)。選擇在?Player Logging?下方列出的任何版本可在 Console 窗口中顯示其日志。
????????Editor???????????????????????????如果控制臺(tái)連接到遠(yuǎn)程開發(fā)版本,則選擇此選項(xiàng)可顯示來自本地 Unity Player 的日志,而不是來自遠(yuǎn)程版本的日志。
????????<Enter IP>????????????????? ?打開?Enter Player?IP 對話框,可以在此對話框中指定遠(yuǎn)程設(shè)備上開發(fā)版本的 IP 地址。單擊對話框中的?Connect?按鈕可連接到版本,并可將其添加到下拉菜單底部的開發(fā)版本列表中。
????????[DEVELOPMENT BUILDS]????????????列出可用的開發(fā)版本。這包括自動(dòng)檢測到的版本以及使用?Enter IP?選項(xiàng)添加的版本。
消息開關(guān)????????????????????????????????????????????????????顯示控制臺(tái)中的消息數(shù)量。單擊可顯示/隱藏消息。
警告開關(guān)????????????????????????????????????????????????????顯示控制臺(tái)中的警告數(shù)量。單擊可顯示/隱藏警告。
錯(cuò)誤開關(guān)????????????????????????????????????????????????????顯示控制臺(tái)中的錯(cuò)誤數(shù)量。單擊可顯示/隱藏錯(cuò)誤。
搜索和過濾控制臺(tái)輸出
可以從控制臺(tái)搜索欄中搜索包含特定關(guān)鍵字的控制臺(tái)消息。在輸入搜索詞時(shí),控制臺(tái)將過濾消息以僅顯示包含匹配文本的消息。如果消息文本中的第一個(gè)匹配項(xiàng)是在消息的可見部分中,控制臺(tái)將高亮顯示第一個(gè)匹配項(xiàng)(請參閱下文調(diào)整行計(jì)數(shù))。但控制臺(tái)不會(huì)高亮顯示同一消息中的后續(xù)匹配項(xiàng)。

可以搜索在任何控制臺(tái)消息中顯示的任何內(nèi)容,包括數(shù)字和特殊字符。例如,您可能希望搜索消息被記錄的時(shí)間,而不是消息中包含的關(guān)鍵字。
搜索會(huì)查找與在搜索欄中鍵入的內(nèi)容完全匹配的內(nèi)容。不能同時(shí)搜索兩個(gè)不同的詞語,也不能使用常見的搜索引擎運(yùn)算符。
還可以按類型來過濾控制臺(tái)消息。單擊搜索欄旁邊的按鈕以進(jìn)行切換:
按鈕消息類型



調(diào)整行計(jì)數(shù)
每個(gè)控制臺(tái)條目的最大長度為 10 行。
要控制每個(gè)條目在列表中顯示多少行,請單擊控制臺(tái)的菜單按鈕,然后從菜單中選擇?Log Entry > [X] Lines,其中?[X]?表示要為每個(gè)條目顯示的行數(shù)。

行數(shù)越大,每個(gè)條目顯示的文本就越多,但會(huì)減少任何給定時(shí)間可見的條目數(shù)。
行計(jì)數(shù)不影響控制臺(tái)搜索功能,該功能總是搜索完整的消息文本。如果匹配的文本位于隱藏的行中,則搜索將返回結(jié)果中的消息,但不會(huì)展開來顯示/高亮顯示匹配的文本。可以在詳細(xì)信息區(qū)域看到完整的消息文本,但是匹配的文本不會(huì)高亮顯示。
堆棧跟蹤日志記錄
Unity 在將消息輸出到控制臺(tái)或日志文件時(shí),可以包括詳細(xì)的堆棧跟蹤信息。在某些情況下,這個(gè)功能很有用,例如,當(dāng)錯(cuò)誤消息不太明確時(shí)。在這種情況下,堆棧跟蹤可以幫助您確定錯(cuò)誤的來源。
托管與非托管堆棧跟蹤
控制臺(tái)可以提供托管代碼和非托管代碼的堆棧跟蹤信息。
托管代碼意味著 C# 腳本在 Unity 中運(yùn)行。其中包括 Unity 附帶的腳本、您編寫的自定義腳本、Asset Store 插件附帶的第三方腳本或者引擎中運(yùn)行的任何其他類型的 C# 腳本。
在某些情況下,您可以訪問托管代碼,并且可以在調(diào)試時(shí)修改托管代碼。在其他情況下,您無法訪問托管代碼,例如,當(dāng)托管腳本編譯為托管 .dll 時(shí),可以查看托管堆棧跟蹤信息,但除非您能夠訪問原始源代碼文件,否則不能修改托管代碼。非托管代碼表示原生 Unity 引擎代碼,或者是直接運(yùn)行在計(jì)算機(jī)上或目標(biāo)版本平臺(tái)上運(yùn)行的原生插件中的代碼。
非托管代碼通常是從 C 或 C++ 代碼編譯的。除非您有原生二進(jìn)制文件的原始源代碼,否則無法訪問非托管代碼。
在大多數(shù)情況下,只使用托管堆棧跟蹤來幫助調(diào)試 C# 代碼。但在某些情況下,完整的堆棧跟蹤可能很有用。
例如,非托管堆棧跟蹤可以幫助您確定錯(cuò)誤是由代碼造成,還是由引擎造成。還可以幫助您識(shí)別錯(cuò)誤來源于引擎的哪個(gè)區(qū)域。當(dāng)沒有托管堆棧跟蹤信息而且錯(cuò)誤消息的描述不是非常具體時(shí),此功能尤其有用。

注意:解析堆棧跟蹤(特別是整個(gè)堆棧跟蹤)是一種資源密集型操作。只有在調(diào)試時(shí)才應(yīng)使用這些選項(xiàng)。
設(shè)置堆棧跟蹤類型
要指定在堆棧跟蹤中包含的信息詳細(xì)程度,請單擊控制臺(tái)的菜單按鈕,從菜單中選擇?Stack Trace Logging >?[MESSAGE TYPE],其中?[MESSAGE TYPE]?表示您希望包含堆棧跟蹤信息的消息類型。然后,選擇下列選項(xiàng)之一:
None:Unity 不輸出堆棧跟蹤信息。
ScriptOnly:Unity 輸出托管代碼的堆棧跟蹤信息。
Full:Unity 輸出托管_和_非托管代碼的堆棧跟蹤信息。
還可以通過腳本 API 來控制堆棧跟蹤日志記錄。請參閱關(guān)于?Application.SetStackTraceLogType?的 API 參考文檔以了解更多詳細(xì)信息。
從堆棧跟蹤輸出中打開源文件
選擇一條消息并在控制臺(tái)窗口底部的詳細(xì)信息區(qū)域查看全文時(shí),對代碼文件中特定行的堆棧跟蹤引用將變?yōu)榭牲c(diǎn)擊的鏈接。單擊任意鏈接即可在 IDE 中打開文件并轉(zhuǎn)到引用的行。
從控制臺(tái)打開日志文件
可以從 Console 窗口菜單中打開日志文件。選擇?Open Player Log?或?Open Editor Log。
過時(shí) API 警告和自動(dòng)更新
除了其他消息,Unity 還顯示有關(guān)在代碼中使用過時(shí) API 調(diào)用的警告。例如,Unity 曾在 MonoBehaviour 和其他類中使用“快捷方式”來訪問常見組件類型。因此,比如說,可使用如下代碼來訪問對象上的剛體:
??
這些快捷方式已被棄用,因此現(xiàn)在應(yīng)該使用如下代碼:
控制臺(tái)檢測到過時(shí) API 調(diào)用時(shí),Unity 將顯示相關(guān)的警告消息。雙擊此消息時(shí),Unity 將自動(dòng)嘗試將已棄用的用法升級(jí)到建議的等效用法。