1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
//----------------------------------------------
// NGUI: Next-Gen UI kit
// Copyright © 2011-2013 Tasharen Entertainment
//----------------------------------------------
using UnityEngine;
using System.Collections.Generic;
/// <summary>
/// This class is meant to be used only internally. It's like Debug.Log, but prints using OnGUI to screen instead.
/// </summary>
[AddComponentMenu("NGUI/Internal/Debug")]
public class NGUIDebug : MonoBehaviour
{
static bool mRayDebug = false;
static List<string> mLines = new List<string>();
static NGUIDebug mInstance = null;
/// <summary>
/// Set by UICamera. Can be used to show/hide raycast information.
/// </summary>
static public bool debugRaycast
{
get
{
return mRayDebug;
}
set
{
if (Application.isPlaying)
{
mRayDebug = value;
if (value) CreateInstance();
}
}
}
/// <summary>
/// Ensure we have an instance present.
/// </summary>
static public void CreateInstance ()
{
if (mInstance == null)
{
GameObject go = new GameObject("_NGUI Debug");
mInstance = go.AddComponent<NGUIDebug>();
DontDestroyOnLoad(go);
}
}
/// <summary>
/// Add a new on-screen log entry.
/// </summary>
static public void Log (string text)
{
if (Application.isPlaying)
{
if (mLines.Count > 20) mLines.RemoveAt(0);
mLines.Add(text);
CreateInstance();
}
else
{
Debug.Log(text);
}
}
/// <summary>
/// Draw bounds immediately. Won't be remembered for the next frame.
/// </summary>
static public void DrawBounds (Bounds b)
{
Vector3 c = b.center;
Vector3 v0 = b.center - b.extents;
Vector3 v1 = b.center + b.extents;
Debug.DrawLine(new Vector3(v0.x, v0.y, c.z), new Vector3(v1.x, v0.y, c.z), Color.red);
Debug.DrawLine(new Vector3(v0.x, v0.y, c.z), new Vector3(v0.x, v1.y, c.z), Color.red);
Debug.DrawLine(new Vector3(v1.x, v0.y, c.z), new Vector3(v1.x, v1.y, c.z), Color.red);
Debug.DrawLine(new Vector3(v0.x, v1.y, c.z), new Vector3(v1.x, v1.y, c.z), Color.red);
}
void OnGUI()
{
if (mLines.Count == 0)
{
if (mRayDebug && UICamera.hoveredObject != null && Application.isPlaying)
{
GUILayout.Label("Last Hit: " + NGUITools.GetHierarchy(UICamera.hoveredObject).Replace("\"", ""));
}
}
else
{
for (int i = 0, imax = mLines.Count; i < imax; ++i)
{
GUILayout.Label(mLines[i]);
}
}
}
}
|