1. 程式人生 > >Unity 輸出除錯資訊到介面

Unity 輸出除錯資訊到介面

Unity裡自帶的Debug輸出資訊的功能非常好用, 但是在實機上不那麼好用了, 不能直觀的看見輸出的資訊. 這時就使用把資訊輸出到介面上的方法. 特別是給非開發人員看的時候就非常方便了,下面這樣:


繪製方式用的是自帶的GUI, 使用時首先把指令碼拖到物件, 然後設定GUI Style :


然後在程式碼中這樣使用就可以了.

    void Update()
    {
        MyDebug.Add("MyDebug", "ver 2014-1-29 10:21");
        MyDebug.Add("XXX", 0.1F);
    }

原始碼:
/// <summary>
/// 用於在螢幕上輸出除錯資訊.
/// 版本 : 2014-1-29 10:21
/// </summary>
public  class MyDebug : MonoBehaviour
{
	static List<string> messages = new List<string>();
	static List<string> names = new List<string>();
	
	public GUIStyle style = null;
	public Rect rect;
	
	public float IntervalSize = 16;
	//繪製持續時間(秒)
	public float ClearTime = 1;
	float nowTime = 0;
	
	void Start()
	{ 
	}
	
	void Update()
	{
		if(nowTime < ClearTime)
		   nowTime+=Time.deltaTime;
		else
		{
			messages.Clear();
			names.Clear();
			nowTime = 0;
		}	
	}
	
	void OnGUI()
	{
		Display();
	}
	
	void Display()
	{
		for(int i=0;i<names.Count;i++)
		{
 			GUI.Box(new Rect(0,i*IntervalSize,rect.width,rect.height),
				names[i] +" : "+messages[i],style);
		}
		
	}
	
	public static void Add(string name, string message)
	{
		if(names.Contains(name) == false)
		{
			names.Add(name);
			messages.Add(message);
		}
		else
		{
			for(int i=0;i<names.Count;i++)
			{
				if(names[i] == name)
				{
					messages[i] = message;
					break;
				}
			}
		
		}
	}
	
	public static void Add(string name, object mess)
	{
		string message = mess.ToString();
		Add(name,message);
	}
	
	public static void Add(string name, bool mess)
	{
		string message;
		
		if(mess == true)
			message = mess.ToString()+"~~~~~~~";
		else
			message = mess.ToString()+".....";
		
		Add(name,message);
	}
  
}