Jump to content
Unity Insider Forum
Sign in to follow this  
  • entries
    14
  • comments
    32
  • views
    42,212

Easy-Doings: Debug.Log mal anders

Sign in to follow this  
MaZy

669 views

[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
Sign in to follow this  


3 Comments


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.

Share this comment


Link to comment
Ja da hast du leider recht. Man kann aber zum Glück durchs Lesen zurück verfolgen, woher diese Fehlermeldung kommt.

Share this comment


Link to comment
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.

Share this comment


Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×