2016-01-05 18 views

回答

2

您可以將一個回調函數添加到Application.logMessageReceived以接收Debug。*消息。例如:

void Awake(){ 
    Application.logMessageReceived += HandleLog; 
} 


private void HandleLog(string logString, string stackTrace, LogType type) { 
    // add them to some UI component for visualizing 
} 
+0

實際上想知道是否有這樣的方法。 – Everts

+0

如何現在打印它? 什麼是stackTrace? – Konowy

+0

stacktrace是在異常發生時執行哪個方法的寄存器(請參閱https://en.wikipedia.org/wiki/Stack_trace)。如果你問的是,我建議你檢查一些編程書籍或在線資源,並學習這個和其他基本概念,因爲你一定會需要它們。至於顯示錯誤,我認爲@fafase已經提出了一種方法。用文本創建一個GUI元素並附加到它。 – Sebastian

0

有一些插件,你可以買到做到這一點。免費的方法是補充一點,你有下面這段代碼更新文本對象:

public class Logger : MonoBehaviour 
{ 
    public Text text; 
    private static Text textSt; 
    private static Queue<string> queue = new Queue<string>(); 
    void Awake() 
    { 
     textSt = text; 
    } 

    public static void Log(string message) 
    { 
     Debug.Log (message); 
     queue.Enqueue(message); 
     if(queue.Count == 10) 
     { 
      queue.Dequeue(); 
     } 
     StringBuilder sb = new StringBuilder(); 
     foreach(string str in queue) 
     { 
      sb.Append(str +"\n"); 
     } 
     textSt.text = sb.ToString(); 
    } 
} 

的Logger.Log方法被調用到位的的debug.log。如果你需要得到錯誤和異常,你可以把try/catch放在你希望問題的地方,然後放置Logger。

文本被放大,以顯示更多的信息,並設置其底端對齊(如堆棧)

你可以對顏色添加一個額外的參數,以便它顯示警告,消息和錯誤使用不同的顏色。

編輯:您可以使用塞巴斯蒂安的答案與我的打印系統,因爲他的建議抓住所有調試(我失蹤)。

+0

在這種情況下需要字符串生成器嗎?普通的字符串不會更好嗎? 所以它應該是你的代碼,但不是 公共靜態無效日誌(字符串消息) 我應該使用: 私人無效HandleLog(字符串logString,串堆棧跟蹤,日誌類型類型) ? – Konowy

+0

只需將偵聽器註冊與我的Log方法作爲偵聽器即可。使用StringBuilder而不是字符串可以減少內存使用量。 – Everts

相關問題