Jump to content
Unity Insider Forum

MaZy's Blog

  • Einträge
    14
  • Kommentare
    32
  • Aufrufe
    46.290

Easy-Doings: Debug.Log mal anders


MaZy

1.836 Aufrufe

[size=6][b]Worum geht es hier?[/b][/size]
Ihr benutzt wahrscheinlich wie ich immer wieder Debug.Log(""). Manchmal verwendet man einfach zu viele. Man vergisst auch manchmal sie zu entfernen oder man ist einfach viel zu faul dafür.
Daher kann man ja mal die Funktion etwas verbessern. So kann man mit einer Boolean die ganzen Logs ausschalten lassen. Ist praktisch, um die ganzen Debug.logs nicht zu löschen, falls man ja immer noch später Debuggen will.

Daher mal nen kleinen Code was ich mir geschrieben habe.

[CODE]
using UnityEngine;

public static class Logger
{
static bool ShowDebug = true;
public static void Print(string str)
{
if (!ShowDebug)
return;
Debug.Log(str);
}
}
[/CODE]

So, ich habe die Klasse Logger genannt. Wollte es simpel haben und auch mich schnell daran erinnern können, was Logger macht oder wie es heißt. Kommt von Log, loggen, daher kann man das kaum vergessen. Wie man hier sieht ist es eine statische Funktion und hat kein Monobehavior. Daher kann man diesen Script nicht als Component benutzen.

Die Klasse hat die ne static boolean und ne public static Funktion "Print", wo ihr dann den Log-Text als String übergeben könnt, welches wiederum zur Debug.Log() Funktion geht und dort ausgeführt wird. Jedoch wird mit boolean vorher überprüft ob wir Debug anzeigen wollen oder nicht.

Einfach auf falls, weils ihr einen Build starten wollt.

Nun könnte man eventuell das erweitern und Bespiel sowas wie Config.ShowDebug machen, aber das ist euch überlassen. :). Sowas ist nützlich, falls ihr wollt, dass die Spieler eventuell Logs aktivieren können. Denn Unity erstellt immer eine Logdatei, wo alle Debug abgespeichert sind. Das kann uns mal die Entwicklung erleichtern.

[size=5][b]Wie wendet man das nun an?[/b][/size]
[CODE]
void Start()
{
Logger.Print("Start ausgeführt");
}
[/CODE]

Ist nun ShowDebug auf falls, so sollte nichts in der Konsole angezeigt werden.
Yow das wars :D

3 Kommentare


Recommended Comments

Das ganze hat aber ein Problem, denn mal schnell von der Console zur entsprechenden Zeile im Script springen ist damit nicht möglich. Klar kann man Scripname und Zeile auslesen lassen... Ich habe dazu mal sowas gebastelt.
[url="http://forum.unity-community.de/topic/8463-combatlog-ein-simpler-combatlogger/"]http://forum.unity-c...r-combatlogger/[/url]
Hat das gleiche Problem. Lässt sich aber sich auch irgendwie lösen, wenn man sich damit beschäftigt. Allerdings lässt sich ein slcher Logger auch gleich super als Anlaufstelle nutzen, um Dinge wie GameAnalytics einzubinden.
Link zu diesem Kommentar
Ist zwar mit Kanonen auf Spatzen, aber anderseits... man KÖNNTE das ganze direkt auf einen eigenen Logger umbauen. Ähnlich dem hier: https://www.assetstore.unity3d.com/en/#!/content/3496
beim loggen des Scripts + Zeile hilft dir dann die StackFrame Klasse aus dem System.Diagnostics namespace ;)
[CODE]
StackFrame stackFrame = new StackFrame(1, true);
string fileName = stackFrame.GetFileName();
string method = stackFrame.GetMethod().ToString();
int line = stackFrame.GetFileLineNumber();

Debug.Log(fileName + " : " + line + " : " + method);
[/CODE]
Einfach in die aufgerufene CustomLogger Methode packen und was auch immer damit tun.
Link zu diesem Kommentar
Gast
Kommentar schreiben...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...