├── .gitignore ├── Assets ├── DebugPlus.meta └── DebugPlus │ ├── Scripts.meta │ ├── Scripts │ ├── DebugPlus.cs │ ├── DebugPlus.cs.meta │ ├── DebugPlusManager.cs │ ├── DebugPlusManager.cs.meta │ ├── Demo.cs │ ├── Demo.cs.meta │ ├── Drawing.cs │ ├── Drawing.cs.meta │ ├── GizmoDrawer.cs │ ├── GizmoDrawer.cs.meta │ ├── LogDrawer.cs │ ├── LogDrawer.cs.meta │ ├── LogEntry.cs │ ├── LogEntry.cs.meta │ ├── SingletonBehavior.cs │ └── SingletonBehavior.cs.meta │ ├── Showcase.unity │ ├── Showcase.unity.meta │ ├── documentation.txt │ └── documentation.txt.meta ├── LICENSE ├── Logs └── Packages-Update.log ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── NavMeshAreas.asset ├── NetworkManager.asset ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset └── VFXManager.asset └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | Assets/AssetStoreTools* 7 | 8 | # Visual Studio cache directory 9 | .vs/ 10 | 11 | # Autogenerated VS/MD/Consulo solution and project files 12 | ExportedObj/ 13 | .consulo/ 14 | *.csproj 15 | *.unityproj 16 | *.sln 17 | *.suo 18 | *.tmp 19 | *.user 20 | *.userprefs 21 | *.pidb 22 | *.booproj 23 | *.svd 24 | *.pdb 25 | *.opendb 26 | 27 | # Unity3D generated meta files 28 | *.pidb.meta 29 | *.pdb.meta 30 | 31 | # Unity3D Generated File On Crash Reports 32 | sysinfo.txt 33 | 34 | # Builds 35 | *.apk 36 | *.unitypackage 37 | -------------------------------------------------------------------------------- /Assets/DebugPlus.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1c506250808717a4ab5bba6e67f587fd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 28468a76b2d0120488b15ffe9ec616ca 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/DebugPlus.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | using System; 4 | using System.Text; 5 | using DebugPlusNS; 6 | 7 | public static class DebugPlus { 8 | private const string INDENTATION = " "; 9 | private static Stack timers = new Stack(); 10 | private static Dictionary blocTimers = new Dictionary(); 11 | 12 | /// 13 | /// Draw a solid box with center and size. 14 | /// 15 | /// 16 | /// 17 | /// The fluent object to add parameters. 18 | public static Drawing DrawCube(Vector3 center, Vector3 size) { 19 | return Draw(new Drawing(() => Gizmos.DrawCube(center, size))); 20 | } 21 | 22 | /// 23 | /// Draw a camera frustum using the currently set Gizmos.matrix for it's location and rotation. 24 | /// 25 | /// The apex of the truncated pyramid. 26 | /// Vertical field of view (ie, the angle at the apex in degrees). 27 | /// Distance of the frustum's far plane. 28 | /// Distance of the frustum's near plane. 29 | /// Width/height ratio. 30 | /// The fluent object to add parameters. 31 | public static Drawing DrawFrustum(Vector3 center, float fov, float maxRange, float minRange, float aspect) { 32 | return Draw(new Drawing(() => Gizmos.DrawFrustum(center, fov, maxRange, minRange, aspect))); 33 | } 34 | 35 | /// 36 | /// Draw a texture in the Scene. 37 | /// 38 | /// The size and position of the texture on the "screen" defined by the XY plane. 39 | /// The texture to be displayed. 40 | /// Inset from the rectangle's left edge. 41 | /// Inset from the rectangle's right edge. 42 | /// Inset from the rectangle's top edge. 43 | /// Inset from the rectangle's bottom edge. 44 | /// An optional material to apply the texture. 45 | /// The fluent object to add parameters. 46 | public static Drawing DrawGUITexture(Rect screenRect, 47 | Texture texture, 48 | int leftBorder, 49 | int rightBorder, 50 | int topBorder, 51 | int bottomBorder, 52 | Material mat) { 53 | return Draw(new Drawing(() => Gizmos.DrawGUITexture(screenRect, texture, leftBorder, rightBorder, topBorder, bottomBorder, mat))); 54 | } 55 | 56 | /// 57 | /// Draw an icon at a position in the Scene view. 58 | /// 59 | /// 60 | /// 61 | /// 62 | /// The fluent object to add parameters. 63 | public static Drawing DrawIcon(Vector3 center, string name, bool allowScaling) { 64 | return Draw(new Drawing(() => Gizmos.DrawIcon(center, name, allowScaling))); 65 | } 66 | 67 | /// 68 | /// Draws a line starting at from towards to. 69 | /// 70 | /// 71 | /// 72 | /// The fluent object to add parameters. 73 | public static Drawing DrawLine(Vector3 start, Vector3 end) { 74 | return Draw(new Drawing(() => Gizmos.DrawLine(start, end))); 75 | } 76 | 77 | /// 78 | /// Draws a mesh. 79 | /// 80 | /// Mesh to draw as a gizmo. 81 | /// Submesh to draw (default is -1, which draws whole mesh). 82 | /// Position (default is zero). 83 | /// Rotation (default is no rotation). 84 | /// Scale (default is no scale). 85 | /// The fluent object to add parameters. 86 | public static Drawing DrawMesh(Mesh mesh, 87 | int submeshIndex, 88 | Vector3 position, 89 | Quaternion rotation, 90 | Vector3 scale) { 91 | return Draw(new Drawing(() => Gizmos.DrawMesh(mesh, submeshIndex, position, rotation, scale))); 92 | } 93 | 94 | /// 95 | /// Draws a ray starting at from to from + direction. 96 | /// 97 | /// 98 | /// 99 | /// The fluent object to add parameters. 100 | public static Drawing DrawRay(Vector3 from, Vector3 direction) { 101 | return Draw(new Drawing(() => Gizmos.DrawRay(from, direction))); 102 | } 103 | 104 | /// 105 | /// Draws a ray starting at from to from + direction. 106 | /// 107 | /// 108 | /// The fluent object to add parameters. 109 | public static Drawing DrawRay(Ray ray) { 110 | return Draw(new Drawing(() => Gizmos.DrawRay(ray))); 111 | } 112 | 113 | /// 114 | /// Draws a solid sphere with center and radius. 115 | /// 116 | /// 117 | /// 118 | /// The fluent object to add parameters. 119 | public static Drawing DrawSphere(Vector3 center, float radius) { 120 | return Draw(new Drawing(() => Gizmos.DrawSphere(center, radius))); 121 | } 122 | 123 | /// 124 | /// Draw a wireframe box with center and size. 125 | /// 126 | /// 127 | /// 128 | /// The fluent object to add parameters. 129 | public static Drawing DrawWireCube(Vector3 center, Vector3 size) { 130 | return Draw(new Drawing(() => Gizmos.DrawWireCube(center, size))); 131 | } 132 | 133 | /// 134 | /// Draws wireframe a mesh. 135 | /// 136 | /// Mesh to draw as a gizmo. 137 | /// Submesh to draw (default is -1, which draws whole mesh). 138 | /// Position (default is zero). 139 | /// Rotation (default is no rotation). 140 | /// Scale (default is no scale). 141 | /// The fluent object to add parameters. 142 | public static Drawing DrawWireMesh(Mesh mesh, 143 | int submeshIndex, 144 | Vector3 position, 145 | Quaternion rotation, 146 | Vector3 scale) { 147 | return Draw(new Drawing(() => Gizmos.DrawWireMesh(mesh, submeshIndex, position, rotation, scale))); 148 | } 149 | 150 | /// 151 | /// Draws a wireframe sphere with center and radius. 152 | /// 153 | /// 154 | /// 155 | /// The fluent object to add parameters. 156 | public static Drawing DrawWireSphere(Vector3 center, float radius) { 157 | return Draw(new Drawing(() => Gizmos.DrawWireSphere(center, radius))); 158 | } 159 | 160 | /// 161 | /// Draws a custom drawing. 162 | /// 163 | /// A custom drawing to draw. 164 | /// The fluent object to add parameters. 165 | public static Drawing Draw(Drawing drawing) { 166 | #if UNITY_EDITOR 167 | GizmoDrawer.Draw(drawing); 168 | #else 169 | if (DebugPlusManager.I.enableInBuild) GizmoDrawer.Draw(drawing); 170 | #endif 171 | return drawing; 172 | } 173 | 174 | /// 175 | /// Draws text directly on the screen. 176 | /// Returns the to change drawing color and duration. 177 | /// 178 | /// 179 | /// The fluent object to add parameters. 180 | public static LogEntry LogOnScreen(string text) { 181 | var res = new LogEntry(text); 182 | #if UNITY_EDITOR 183 | LogDrawer.Log(res); 184 | #else 185 | if (DebugPlusManager.I.enableInBuild) LogDrawer.Log(res); 186 | #endif 187 | return res; 188 | } 189 | 190 | /// 191 | /// Returns a multiline string presenting the time spent in each timed bloc of code. 192 | /// If a single bloc has been called from different code paths, times are dispatched between paths. 193 | /// 194 | /// The multiline report. 195 | public static string GetChronometerReport() { 196 | StringBuilder sb = new StringBuilder("Time spent in measured blocs: " + Environment.NewLine); 197 | foreach (var label in blocTimers.Keys) { 198 | BlocTimer timer = blocTimers[label]; 199 | sb.Append(" " + timer.label + " : " + timer.Duration + " ms"); 200 | if (timer.showAverage) { 201 | sb.Append(" (" + timer.DurationPerCall + " per call)"); 202 | } 203 | sb.Append(Environment.NewLine); 204 | } 205 | return sb.ToString(); 206 | } 207 | 208 | /// 209 | /// Reset all timers and delete cumulated times. 210 | /// 211 | public static void ResetChronometer() { 212 | blocTimers = new Dictionary(); 213 | } 214 | 215 | /// 216 | /// Starts the timer for this bloc of code. 217 | /// Each timer must be stopped with method. Note that you can only stop the last started timer. 218 | /// 219 | /// If true, the average time per call will be shown for this bloc of code in the report. 220 | /// An optionnal label to use in addition of the calling method name. Convenient if you need to time more than one bloc of code in a single method body. 221 | public static void StartChronometer(string arg = "", bool showAverage = false, bool ignoreStackTrace = false) { 222 | string callTrace = "", indentation = ""; 223 | foreach (var timer in timers) { 224 | indentation += INDENTATION; 225 | callTrace += timer.label; 226 | } 227 | string label = indentation; 228 | if (!ignoreStackTrace) { 229 | var callingMethod = new System.Diagnostics.StackFrame(1).GetMethod(); 230 | 231 | string className = callingMethod != null ? callingMethod.ReflectedType.Name : "UnknowClass"; 232 | string methodName = callingMethod != null ? callingMethod.Name : "UnknowMethod"; 233 | label += className + "." + methodName; 234 | } 235 | if (!string.IsNullOrEmpty(arg)) { 236 | label += "." + arg; 237 | } 238 | if (!blocTimers.ContainsKey(callTrace + label)) { 239 | blocTimers[callTrace + label] = new BlocTimer(label, showAverage); 240 | } 241 | blocTimers[callTrace + label].Start(); 242 | timers.Push(blocTimers[callTrace + label]); 243 | } 244 | 245 | /// 246 | /// Stops the last started timer. 247 | /// 248 | public static void StopCurrentChronometer() { 249 | timers.Pop().Stop(); 250 | } 251 | 252 | private class BlocTimer 253 | { 254 | private DateTime cumulatedTime = DateTime.MinValue, startTime; 255 | private int startCount; 256 | 257 | public string label; 258 | public bool showAverage; 259 | 260 | public BlocTimer(string label, bool showAverage) { 261 | this.label = label; 262 | this.showAverage = showAverage; 263 | } 264 | 265 | public void Start() { 266 | startTime = DateTime.Now; 267 | startCount++; 268 | } 269 | 270 | public void Stop() { 271 | cumulatedTime += DateTime.Now - startTime; 272 | } 273 | 274 | public long Duration { get { return cumulatedTime.Ticks / TimeSpan.TicksPerMillisecond; } } 275 | public long DurationPerCall { get { return cumulatedTime.Ticks / startCount / TimeSpan.TicksPerMillisecond; } } 276 | 277 | public void Reset() { 278 | cumulatedTime = DateTime.MinValue; 279 | startTime = DateTime.MinValue; 280 | } 281 | } 282 | 283 | } 284 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/DebugPlus.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d60e724edde2bf24b9a1e4262b1ad573 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/DebugPlusManager.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | namespace DebugPlusNS 5 | { 6 | public class DebugPlusManager : SingletonBehavior 7 | { 8 | public bool enableInBuild; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/DebugPlusManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e8c07ff58e633e04b9ed697e13dc6cff 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/Demo.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using System.Threading; 4 | using UnityEngine; 5 | 6 | namespace DebugPlusNS { 7 | public class Demo : MonoBehaviour { 8 | private float yaw, pitch; 9 | 10 | public GameObject go; 11 | 12 | void Update() { 13 | pitch -= Input.GetAxis("Mouse Y"); 14 | pitch = Mathf.Clamp(pitch, -90, 90); 15 | yaw += Input.GetAxis("Mouse X"); 16 | 17 | Camera.main.transform.rotation = Quaternion.Euler(pitch, yaw, 0); 18 | 19 | bool space = Input.GetKey(KeyCode.Space); 20 | 21 | // some logs on screen 22 | DebugPlus.LogOnScreen(space ? "space key down !" : "space key up") 23 | .Color(space ? Color.green : Color.red) 24 | .Duration(1); 25 | DebugPlus.LogOnScreen("yaw: " + yaw + " pitch: " + pitch) 26 | .Color(pitch > 0 ? Color.blue : Color.green); 27 | 28 | // some gizmos 29 | if (space) { 30 | DebugPlus.DrawWireSphere(new Vector3(0, 1, -2), 0.8f) 31 | .Color(Color.red) 32 | .Duration(2); 33 | DebugPlus.DrawSphere(new Vector3(0, 1, 0), 1) 34 | .Color(Color.blue) 35 | .Duration(2); 36 | DebugPlus.DrawCube(Vector3.zero, new Vector3(1, 2, 1)) 37 | .Color(Color.cyan) 38 | .Matrix(go.transform.localToWorldMatrix); 39 | } 40 | } 41 | 42 | private void Awake() { 43 | // some code timing 44 | MethodA(); 45 | MethodA(); 46 | MethodA(); 47 | MethodA(); 48 | MethodA(); 49 | Debug.Log(DebugPlus.GetChronometerReport()); 50 | } 51 | 52 | private void MethodA() { 53 | DebugPlus.StartChronometer(); 54 | 55 | MethodB(); 56 | MethodC(); 57 | 58 | DebugPlus.StopCurrentChronometer(); 59 | } 60 | private void MethodB() { 61 | DebugPlus.StartChronometer(); 62 | 63 | DebugPlus.StartChronometer("sub bloc"); 64 | // your timed sub bloc 65 | Thread.Sleep(3); 66 | DebugPlus.StopCurrentChronometer(); 67 | 68 | MethodC(); 69 | MethodC(); 70 | MethodC(); 71 | 72 | DebugPlus.StopCurrentChronometer(); 73 | } 74 | private void MethodC() { 75 | DebugPlus.StartChronometer(showAverage:true); 76 | 77 | Thread.Sleep(10); 78 | 79 | DebugPlus.StopCurrentChronometer(); 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/Demo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d4d74629bd8caf4ba4f72666b6823b6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/Drawing.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using System; 4 | 5 | namespace DebugPlusNS { 6 | public class Drawing { 7 | internal Action action; 8 | internal Color color = UnityEngine.Color.red; 9 | internal Matrix4x4 matrix = Matrix4x4.identity; 10 | internal float duration = 0; 11 | internal int creationFrame; 12 | 13 | internal Drawing (Action action) { 14 | this.action = action; 15 | creationFrame = Time.frameCount; 16 | } 17 | 18 | public Drawing Color(Color color) { 19 | this.color = color; 20 | return this; 21 | } 22 | 23 | public Drawing Duration(float duration) { 24 | this.duration = duration; 25 | return this; 26 | } 27 | 28 | public Drawing Matrix(Matrix4x4 matrix) { 29 | this.matrix = matrix; 30 | return this; 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/Drawing.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7df3915f2e893784a8a54d43dcaffee1 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/GizmoDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | 5 | namespace DebugPlusNS { 6 | public class GizmoDrawer : SingletonBehavior { 7 | public readonly List drawings = new List(); 8 | 9 | private void Update() { 10 | foreach (var d in drawings.ToList()) { 11 | if (d.creationFrame == Time.frameCount) continue; 12 | d.duration -= Time.deltaTime; 13 | if (d.duration < 0) drawings.Remove(d); 14 | } 15 | } 16 | 17 | private void OnDrawGizmos() { 18 | foreach (var d in drawings) { 19 | var prevColor = Gizmos.color; 20 | var prevMatrix = Gizmos.matrix; 21 | Gizmos.color = d.color; 22 | if (d.matrix != default(Matrix4x4)) { 23 | Gizmos.matrix = d.matrix; 24 | } 25 | d.action(); 26 | 27 | Gizmos.color = prevColor; 28 | Gizmos.matrix = prevMatrix; 29 | } 30 | } 31 | 32 | public static void Draw(Drawing drawing) { 33 | I.drawings.Add(drawing); 34 | } 35 | 36 | [RuntimeInitializeOnLoadMethod] 37 | static void Init() { 38 | applicationIsQuitting = false; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/GizmoDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a2ecb77323d64dc4582294d43b747956 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/LogDrawer.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | using UnityEngine.UI; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | 7 | namespace DebugPlusNS { 8 | public class LogDrawer : SingletonBehavior { 9 | private const int LOG_CAPACITY = 30; 10 | 11 | public readonly List logEntries = new List(); 12 | private List texts; 13 | 14 | private void Start() { 15 | GameObject cgo = new GameObject("DebugPlusCanvas"); 16 | DontDestroyOnLoad(cgo); 17 | 18 | // canvas 19 | var canvas = cgo.AddComponent(); 20 | canvas.sortingOrder = 0; 21 | canvas.renderMode = RenderMode.ScreenSpaceOverlay; 22 | 23 | // vertical layout 24 | var vlgo = new GameObject("Log", typeof(VerticalLayoutGroup)); 25 | vlgo.transform.SetParent(cgo.transform, false); 26 | 27 | var vlg = vlgo.GetComponent(); 28 | vlg.childForceExpandHeight = false; 29 | vlg.childForceExpandWidth = false; 30 | vlg.childControlHeight = false; 31 | 32 | var vlRect = vlgo.GetComponent(); 33 | vlRect.anchorMin = new Vector2(0.05f, 0.3f); 34 | vlRect.anchorMax = new Vector2(0.7f, 0.95f); 35 | vlRect.anchoredPosition = Vector2.zero; 36 | vlRect.sizeDelta = Vector2.zero; 37 | 38 | // texts 39 | I.texts = new List(); 40 | for (int i = 0; i < LOG_CAPACITY; i++) { 41 | var go = new GameObject("Log entry", typeof(Text)); 42 | go.transform.SetParent(vlgo.transform, false); 43 | go.GetComponent().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 17); 44 | //go.GetComponent().ForceUpdateRectTransforms(); 45 | var t = go.GetComponent(); 46 | t.font = Resources.GetBuiltinResource("Arial.ttf"); 47 | I.texts.Add(t); 48 | } 49 | } 50 | 51 | private void Update() { 52 | if (texts != null) { 53 | for (int i = 0; i < LOG_CAPACITY; i++) { 54 | var t = texts[i]; 55 | if (i < logEntries.Count) { 56 | t.gameObject.SetActive(true); 57 | t.text = logEntries[i].text; 58 | t.color = logEntries[i].color; 59 | } else { 60 | t.gameObject.SetActive(false); 61 | } 62 | } 63 | } 64 | 65 | foreach (var le in logEntries.ToList()) { 66 | le.duration -= Time.deltaTime; 67 | if (le.duration <= 0) { 68 | logEntries.Remove(le); 69 | } 70 | } 71 | } 72 | 73 | public static void Log(LogEntry logEntry) { 74 | I.logEntries.Insert(0, logEntry); 75 | } 76 | 77 | [RuntimeInitializeOnLoadMethod] 78 | static void Init() { 79 | applicationIsQuitting = false; 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/LogDrawer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 240b8ffd9afff5847875b8fcdf5ad0d6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/LogEntry.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | using System.Collections; 3 | 4 | namespace DebugPlusNS { 5 | public class LogEntry { 6 | internal string text; 7 | internal Color color = UnityEngine.Color.red; 8 | internal float duration = 0; 9 | 10 | internal LogEntry(string text) { 11 | this.text = text; 12 | } 13 | 14 | public LogEntry Color(Color color) { 15 | this.color = color; 16 | return this; 17 | } 18 | 19 | public LogEntry Duration(float duration) { 20 | this.duration = duration; 21 | return this; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/LogEntry.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2c01fa7a648829a439366b0386ffcafd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/SingletonBehavior.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | namespace DebugPlusNS { 4 | public class SingletonBehavior : MonoBehaviour where T : MonoBehaviour { 5 | private static object o = new object(); 6 | protected static bool applicationIsQuitting = false; 7 | 8 | private static T i; 9 | public static T I { 10 | get { 11 | if (applicationIsQuitting) { 12 | Debug.LogWarning("Single instance of "+ typeof(T) + " already destroyed on application quit. Won't create again - returning null."); 13 | return null; 14 | } 15 | 16 | lock (o) { 17 | if (i == null) { 18 | var candidates = FindObjectsOfType(typeof(T)); 19 | if (candidates.Length > 1) { 20 | Debug.LogError("There are many instances of the singleton behavior " + typeof(T) + " in the scene, which is illegal."); 21 | return i; 22 | } 23 | 24 | if (candidates.Length > 0) { 25 | i = (T)candidates[0]; 26 | } else { 27 | GameObject singleton = new GameObject(); 28 | i = singleton.AddComponent(); 29 | singleton.name = typeof(T) + " singleton"; 30 | DontDestroyOnLoad(singleton); 31 | } 32 | } 33 | return i; 34 | } 35 | } 36 | } 37 | 38 | /// 39 | /// When Unity quits, it destroys objects in a random order. 40 | /// In principle, a Singleton is only destroyed when application quits. 41 | /// If any script calls Instance after it have been destroyed, 42 | /// it will create a buggy ghost object that will stay on the Editor scene 43 | /// even after stopping playing the Application. Really bad! 44 | /// So, this was made to be sure we're not creating that buggy ghost object. 45 | /// 46 | private void OnApplicationQuit() { 47 | applicationIsQuitting = true; 48 | } 49 | 50 | //private void OnDestroy() { 51 | // applicationIsQuitting = true; 52 | //} 53 | } 54 | } -------------------------------------------------------------------------------- /Assets/DebugPlus/Scripts/SingletonBehavior.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4b6776a92d1e7b940a15f95eee8d060a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Showcase.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 170076734} 41 | m_IndirectSpecularColor: {r: 0.44657868, g: 0.49641263, b: 0.57481706, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 11 47 | m_GIWorkflowMode: 0 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 10 58 | m_Resolution: 2 59 | m_BakeResolution: 10 60 | m_AtlasSize: 512 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_Padding: 2 66 | m_LightmapParameters: {fileID: 0} 67 | m_LightmapsBakeMode: 1 68 | m_TextureCompression: 1 69 | m_FinalGather: 0 70 | m_FinalGatherFiltering: 1 71 | m_FinalGatherRayCount: 256 72 | m_ReflectionCompression: 2 73 | m_MixedBakeMode: 2 74 | m_BakeBackend: 1 75 | m_PVRSampling: 1 76 | m_PVRDirectSampleCount: 32 77 | m_PVRSampleCount: 256 78 | m_PVRBounces: 2 79 | m_PVRFilterTypeDirect: 0 80 | m_PVRFilterTypeIndirect: 0 81 | m_PVRFilterTypeAO: 0 82 | m_PVRFilteringMode: 1 83 | m_PVRCulling: 1 84 | m_PVRFilteringGaussRadiusDirect: 1 85 | m_PVRFilteringGaussRadiusIndirect: 5 86 | m_PVRFilteringGaussRadiusAO: 2 87 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 88 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 89 | m_PVRFilteringAtrousPositionSigmaAO: 1 90 | m_ShowResolutionOverlay: 1 91 | m_LightingDataAsset: {fileID: 0} 92 | m_UseShadowmask: 1 93 | --- !u!196 &4 94 | NavMeshSettings: 95 | serializedVersion: 2 96 | m_ObjectHideFlags: 0 97 | m_BuildSettings: 98 | serializedVersion: 2 99 | agentTypeID: 0 100 | agentRadius: 0.5 101 | agentHeight: 2 102 | agentSlope: 45 103 | agentClimb: 0.4 104 | ledgeDropHeight: 0 105 | maxJumpAcrossDistance: 0 106 | minRegionArea: 2 107 | manualCellSize: 0 108 | cellSize: 0.16666667 109 | manualTileSize: 0 110 | tileSize: 256 111 | accuratePlacement: 0 112 | debug: 113 | m_Flags: 0 114 | m_NavMeshData: {fileID: 0} 115 | --- !u!1 &170076733 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_CorrespondingSourceObject: {fileID: 0} 119 | m_PrefabInstance: {fileID: 0} 120 | m_PrefabAsset: {fileID: 0} 121 | serializedVersion: 6 122 | m_Component: 123 | - component: {fileID: 170076735} 124 | - component: {fileID: 170076734} 125 | m_Layer: 0 126 | m_Name: Directional Light 127 | m_TagString: Untagged 128 | m_Icon: {fileID: 0} 129 | m_NavMeshLayer: 0 130 | m_StaticEditorFlags: 0 131 | m_IsActive: 1 132 | --- !u!108 &170076734 133 | Light: 134 | m_ObjectHideFlags: 0 135 | m_CorrespondingSourceObject: {fileID: 0} 136 | m_PrefabInstance: {fileID: 0} 137 | m_PrefabAsset: {fileID: 0} 138 | m_GameObject: {fileID: 170076733} 139 | m_Enabled: 1 140 | serializedVersion: 8 141 | m_Type: 1 142 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 143 | m_Intensity: 1 144 | m_Range: 10 145 | m_SpotAngle: 30 146 | m_CookieSize: 10 147 | m_Shadows: 148 | m_Type: 2 149 | m_Resolution: -1 150 | m_CustomResolution: -1 151 | m_Strength: 1 152 | m_Bias: 0.05 153 | m_NormalBias: 0.4 154 | m_NearPlane: 0.2 155 | m_Cookie: {fileID: 0} 156 | m_DrawHalo: 0 157 | m_Flare: {fileID: 0} 158 | m_RenderMode: 0 159 | m_CullingMask: 160 | serializedVersion: 2 161 | m_Bits: 4294967295 162 | m_Lightmapping: 1 163 | m_LightShadowCasterMode: 0 164 | m_AreaSize: {x: 1, y: 1} 165 | m_BounceIntensity: 1 166 | m_ColorTemperature: 6570 167 | m_UseColorTemperature: 0 168 | m_ShadowRadius: 0 169 | m_ShadowAngle: 0 170 | --- !u!4 &170076735 171 | Transform: 172 | m_ObjectHideFlags: 0 173 | m_CorrespondingSourceObject: {fileID: 0} 174 | m_PrefabInstance: {fileID: 0} 175 | m_PrefabAsset: {fileID: 0} 176 | m_GameObject: {fileID: 170076733} 177 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 178 | m_LocalPosition: {x: 4.72, y: 3, z: -7.15} 179 | m_LocalScale: {x: 1, y: 1, z: 1} 180 | m_Children: [] 181 | m_Father: {fileID: 0} 182 | m_RootOrder: 1 183 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 184 | --- !u!1 &534669902 185 | GameObject: 186 | m_ObjectHideFlags: 0 187 | m_CorrespondingSourceObject: {fileID: 0} 188 | m_PrefabInstance: {fileID: 0} 189 | m_PrefabAsset: {fileID: 0} 190 | serializedVersion: 6 191 | m_Component: 192 | - component: {fileID: 534669905} 193 | - component: {fileID: 534669904} 194 | - component: {fileID: 534669903} 195 | - component: {fileID: 534669906} 196 | m_Layer: 0 197 | m_Name: Main Camera 198 | m_TagString: MainCamera 199 | m_Icon: {fileID: 0} 200 | m_NavMeshLayer: 0 201 | m_StaticEditorFlags: 0 202 | m_IsActive: 1 203 | --- !u!81 &534669903 204 | AudioListener: 205 | m_ObjectHideFlags: 0 206 | m_CorrespondingSourceObject: {fileID: 0} 207 | m_PrefabInstance: {fileID: 0} 208 | m_PrefabAsset: {fileID: 0} 209 | m_GameObject: {fileID: 534669902} 210 | m_Enabled: 1 211 | --- !u!20 &534669904 212 | Camera: 213 | m_ObjectHideFlags: 0 214 | m_CorrespondingSourceObject: {fileID: 0} 215 | m_PrefabInstance: {fileID: 0} 216 | m_PrefabAsset: {fileID: 0} 217 | m_GameObject: {fileID: 534669902} 218 | m_Enabled: 1 219 | serializedVersion: 2 220 | m_ClearFlags: 1 221 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 222 | m_projectionMatrixMode: 1 223 | m_SensorSize: {x: 36, y: 24} 224 | m_LensShift: {x: 0, y: 0} 225 | m_GateFitMode: 2 226 | m_FocalLength: 50 227 | m_NormalizedViewPortRect: 228 | serializedVersion: 2 229 | x: 0 230 | y: 0 231 | width: 1 232 | height: 1 233 | near clip plane: 0.3 234 | far clip plane: 1000 235 | field of view: 60 236 | orthographic: 0 237 | orthographic size: 5 238 | m_Depth: -1 239 | m_CullingMask: 240 | serializedVersion: 2 241 | m_Bits: 4294967295 242 | m_RenderingPath: -1 243 | m_TargetTexture: {fileID: 0} 244 | m_TargetDisplay: 0 245 | m_TargetEye: 3 246 | m_HDR: 1 247 | m_AllowMSAA: 1 248 | m_AllowDynamicResolution: 0 249 | m_ForceIntoRT: 0 250 | m_OcclusionCulling: 1 251 | m_StereoConvergence: 10 252 | m_StereoSeparation: 0.022 253 | --- !u!4 &534669905 254 | Transform: 255 | m_ObjectHideFlags: 0 256 | m_CorrespondingSourceObject: {fileID: 0} 257 | m_PrefabInstance: {fileID: 0} 258 | m_PrefabAsset: {fileID: 0} 259 | m_GameObject: {fileID: 534669902} 260 | m_LocalRotation: {x: 0.16520514, y: 0.17105195, z: -0.029106338, w: 0.9708766} 261 | m_LocalPosition: {x: -2.14, y: 2.06, z: -5.5} 262 | m_LocalScale: {x: 1, y: 1, z: 1} 263 | m_Children: [] 264 | m_Father: {fileID: 0} 265 | m_RootOrder: 0 266 | m_LocalEulerAnglesHint: {x: 19.314001, y: 19.984001, z: 0} 267 | --- !u!114 &534669906 268 | MonoBehaviour: 269 | m_ObjectHideFlags: 0 270 | m_CorrespondingSourceObject: {fileID: 0} 271 | m_PrefabInstance: {fileID: 0} 272 | m_PrefabAsset: {fileID: 0} 273 | m_GameObject: {fileID: 534669902} 274 | m_Enabled: 1 275 | m_EditorHideFlags: 0 276 | m_Script: {fileID: 11500000, guid: 3d4d74629bd8caf4ba4f72666b6823b6, type: 3} 277 | m_Name: 278 | m_EditorClassIdentifier: 279 | go: {fileID: 1491722759} 280 | --- !u!1 &1162543841 281 | GameObject: 282 | m_ObjectHideFlags: 0 283 | m_CorrespondingSourceObject: {fileID: 0} 284 | m_PrefabInstance: {fileID: 0} 285 | m_PrefabAsset: {fileID: 0} 286 | serializedVersion: 6 287 | m_Component: 288 | - component: {fileID: 1162543845} 289 | - component: {fileID: 1162543844} 290 | - component: {fileID: 1162543843} 291 | - component: {fileID: 1162543842} 292 | m_Layer: 0 293 | m_Name: Cube 294 | m_TagString: Untagged 295 | m_Icon: {fileID: 0} 296 | m_NavMeshLayer: 0 297 | m_StaticEditorFlags: 0 298 | m_IsActive: 1 299 | --- !u!65 &1162543842 300 | BoxCollider: 301 | m_ObjectHideFlags: 0 302 | m_CorrespondingSourceObject: {fileID: 0} 303 | m_PrefabInstance: {fileID: 0} 304 | m_PrefabAsset: {fileID: 0} 305 | m_GameObject: {fileID: 1162543841} 306 | m_Material: {fileID: 0} 307 | m_IsTrigger: 0 308 | m_Enabled: 1 309 | serializedVersion: 2 310 | m_Size: {x: 1, y: 1, z: 1} 311 | m_Center: {x: 0, y: 0, z: 0} 312 | --- !u!23 &1162543843 313 | MeshRenderer: 314 | m_ObjectHideFlags: 0 315 | m_CorrespondingSourceObject: {fileID: 0} 316 | m_PrefabInstance: {fileID: 0} 317 | m_PrefabAsset: {fileID: 0} 318 | m_GameObject: {fileID: 1162543841} 319 | m_Enabled: 1 320 | m_CastShadows: 1 321 | m_ReceiveShadows: 1 322 | m_DynamicOccludee: 1 323 | m_MotionVectors: 1 324 | m_LightProbeUsage: 1 325 | m_ReflectionProbeUsage: 1 326 | m_RenderingLayerMask: 1 327 | m_RendererPriority: 0 328 | m_Materials: 329 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 330 | m_StaticBatchInfo: 331 | firstSubMesh: 0 332 | subMeshCount: 0 333 | m_StaticBatchRoot: {fileID: 0} 334 | m_ProbeAnchor: {fileID: 0} 335 | m_LightProbeVolumeOverride: {fileID: 0} 336 | m_ScaleInLightmap: 1 337 | m_PreserveUVs: 0 338 | m_IgnoreNormalsForChartDetection: 0 339 | m_ImportantGI: 0 340 | m_StitchLightmapSeams: 0 341 | m_SelectedEditorRenderState: 3 342 | m_MinimumChartSize: 4 343 | m_AutoUVMaxDistance: 0.5 344 | m_AutoUVMaxAngle: 89 345 | m_LightmapParameters: {fileID: 0} 346 | m_SortingLayerID: 0 347 | m_SortingLayer: 0 348 | m_SortingOrder: 0 349 | --- !u!33 &1162543844 350 | MeshFilter: 351 | m_ObjectHideFlags: 0 352 | m_CorrespondingSourceObject: {fileID: 0} 353 | m_PrefabInstance: {fileID: 0} 354 | m_PrefabAsset: {fileID: 0} 355 | m_GameObject: {fileID: 1162543841} 356 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 357 | --- !u!4 &1162543845 358 | Transform: 359 | m_ObjectHideFlags: 0 360 | m_CorrespondingSourceObject: {fileID: 0} 361 | m_PrefabInstance: {fileID: 0} 362 | m_PrefabAsset: {fileID: 0} 363 | m_GameObject: {fileID: 1162543841} 364 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 365 | m_LocalPosition: {x: -0.22233915, y: 0.38021326, z: -0.028448105} 366 | m_LocalScale: {x: 6, y: 0.1, z: 6} 367 | m_Children: [] 368 | m_Father: {fileID: 0} 369 | m_RootOrder: 2 370 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 371 | --- !u!1 &1491722759 372 | GameObject: 373 | m_ObjectHideFlags: 0 374 | m_CorrespondingSourceObject: {fileID: 0} 375 | m_PrefabInstance: {fileID: 0} 376 | m_PrefabAsset: {fileID: 0} 377 | serializedVersion: 6 378 | m_Component: 379 | - component: {fileID: 1491722763} 380 | - component: {fileID: 1491722762} 381 | - component: {fileID: 1491722761} 382 | - component: {fileID: 1491722760} 383 | m_Layer: 0 384 | m_Name: Capsule 385 | m_TagString: Untagged 386 | m_Icon: {fileID: 0} 387 | m_NavMeshLayer: 0 388 | m_StaticEditorFlags: 0 389 | m_IsActive: 1 390 | --- !u!136 &1491722760 391 | CapsuleCollider: 392 | m_ObjectHideFlags: 0 393 | m_CorrespondingSourceObject: {fileID: 0} 394 | m_PrefabInstance: {fileID: 0} 395 | m_PrefabAsset: {fileID: 0} 396 | m_GameObject: {fileID: 1491722759} 397 | m_Material: {fileID: 0} 398 | m_IsTrigger: 0 399 | m_Enabled: 1 400 | m_Radius: 0.5 401 | m_Height: 2 402 | m_Direction: 1 403 | m_Center: {x: 0, y: 0, z: 0} 404 | --- !u!23 &1491722761 405 | MeshRenderer: 406 | m_ObjectHideFlags: 0 407 | m_CorrespondingSourceObject: {fileID: 0} 408 | m_PrefabInstance: {fileID: 0} 409 | m_PrefabAsset: {fileID: 0} 410 | m_GameObject: {fileID: 1491722759} 411 | m_Enabled: 1 412 | m_CastShadows: 1 413 | m_ReceiveShadows: 1 414 | m_DynamicOccludee: 1 415 | m_MotionVectors: 1 416 | m_LightProbeUsage: 1 417 | m_ReflectionProbeUsage: 1 418 | m_RenderingLayerMask: 1 419 | m_RendererPriority: 0 420 | m_Materials: 421 | - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} 422 | m_StaticBatchInfo: 423 | firstSubMesh: 0 424 | subMeshCount: 0 425 | m_StaticBatchRoot: {fileID: 0} 426 | m_ProbeAnchor: {fileID: 0} 427 | m_LightProbeVolumeOverride: {fileID: 0} 428 | m_ScaleInLightmap: 1 429 | m_PreserveUVs: 0 430 | m_IgnoreNormalsForChartDetection: 0 431 | m_ImportantGI: 0 432 | m_StitchLightmapSeams: 0 433 | m_SelectedEditorRenderState: 3 434 | m_MinimumChartSize: 4 435 | m_AutoUVMaxDistance: 0.5 436 | m_AutoUVMaxAngle: 89 437 | m_LightmapParameters: {fileID: 0} 438 | m_SortingLayerID: 0 439 | m_SortingLayer: 0 440 | m_SortingOrder: 0 441 | --- !u!33 &1491722762 442 | MeshFilter: 443 | m_ObjectHideFlags: 0 444 | m_CorrespondingSourceObject: {fileID: 0} 445 | m_PrefabInstance: {fileID: 0} 446 | m_PrefabAsset: {fileID: 0} 447 | m_GameObject: {fileID: 1491722759} 448 | m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} 449 | --- !u!4 &1491722763 450 | Transform: 451 | m_ObjectHideFlags: 0 452 | m_CorrespondingSourceObject: {fileID: 0} 453 | m_PrefabInstance: {fileID: 0} 454 | m_PrefabAsset: {fileID: 0} 455 | m_GameObject: {fileID: 1491722759} 456 | m_LocalRotation: {x: 0.6719464, y: -0.22020014, z: 0.22020014, w: 0.6719464} 457 | m_LocalPosition: {x: -1.44, y: 1.22, z: 2.85} 458 | m_LocalScale: {x: 1, y: 1, z: 1} 459 | m_Children: [] 460 | m_Father: {fileID: 0} 461 | m_RootOrder: 3 462 | m_LocalEulerAnglesHint: {x: 90.00001, y: 0, z: 36.288002} 463 | -------------------------------------------------------------------------------- /Assets/DebugPlus/Showcase.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e832023a9d4cc944b9b30d56d0e89e7b 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/DebugPlus/documentation.txt: -------------------------------------------------------------------------------- 1 | DebugPlus helps you debug your code by drawing 3d shapes and logs on screen, and timing parts of code. 2 | When you add the plugin to your project, the class "DebugPlus" becomes available from anywhere in your code. 3 | This is your one and only entry point to all DebugPlus features. 4 | 5 | ------------- 6 | How to use it 7 | ------------- 8 | 9 | You can draw any built-in Unity gyzmo like this: 10 | DebugPlus.DrawCube(center, size); 11 | DebugPlus.DrawSphere(center, radius); 12 | DebugPlus.DrawLine(start, end); 13 | DebugPlus.DrawRay(from, direction); 14 | DebugPlus.DrawMesh(...); 15 | DebugPlus.DrawWireCube(...); 16 | DebugPlus.DrawWireMesh(...); 17 | DebugPlus.DrawWireSphere(...); 18 | DebugPlus.DrawFrustum(...); 19 | DebugPlus.DrawGUITexture(...); 20 | DebugPlus.DrawIcon(...); 21 | 22 | You can write logs directly on the screen like this: 23 | DebugPlus.LogOnScreen("this will appear on the game screen"); 24 | 25 | Optionaly, you can specify a duration, color and matrix in a fluent way like this: 26 | DebugPlus.DrawLine(start, end) 27 | .Duration(d) 28 | .Color(c) 29 | .Matrix(m); 30 | DebugPlus.LogOnScreen("this text will appear in red for 5 seconds) 31 | .Duration(5) 32 | .Color(Color.red); 33 | 34 | You can also draw your own home-made gyzmo like this: 35 | DebugPlus.Draw(new Drawing(() => 36 | { 37 | // let's draw a wire triangle 38 | Gyzmo.DrawLine(aPoint, bPoint); 39 | Gyzmo.DrawLine(bPoint, cPoint); 40 | Gyzmo.DrawLine(aPoint, cPoint); 41 | })) 42 | .Color(c) 43 | .Duration(d); 44 | 45 | * duration is given in seconds 46 | 47 | Remimder : Unity allows you to draw gyzmos in the game screen in addition to the editor screen. Just check the toggle 48 | button on top of the game tab. 49 | 50 | ---------------- 51 | How does it work 52 | ---------------- 53 | 54 | In Unity, you can draw gyzoms only by implementing OnDrawGizmos, and only in MonoBehavior classes. But Unity also provides 55 | a line drawing feature in the Debug class. DebugPlus allows to draw all built-in Unity's gyzmos in the same way that Unity.Debug 56 | is drawing line : anytime, anywhere by specifying only a color and a duration. DebugPlus also adds an optionnal matrix to deform 57 | shapes like cubes or meshes. 58 | 59 | To draw these gyzmos, DebugPlus creates a game object that implements the OnDrawGizmos methods for you, and manages the drawing 60 | of the gyzmos over time. This game object is created only in play mode, if you call DebugPlus. 61 | 62 | 63 | DebugPlus also creates a dedicated canvas where it is possble to draw text, because it's sometimes more handy to have a log on the screen, 64 | not only on the console. The LogOnScreen methods works the same way than gyzmos : logs are drawn with a specified color and for 65 | a specified duration over time. If the dedicated canvas messes with your existing GUI, please report it via email or on the official 66 | forum (see below). 67 | 68 | In absence of a duration, the gyzmos and logs are drawn only once on the next frame. 69 | 70 | ---------------- 71 | Code chronometer 72 | ---------------- 73 | 74 | DebugPlus also provide a code chronometer. This tool allow you to time blocs of code, cumulate result and get a report showing all 75 | timers in a hierachical way, to understand where the time is spent. Each time you start a chronometer, DebugPlus will get the calling 76 | method name (plus an optionnal label you can set) and cumulate times for this bloc of code. 77 | 78 | Note that the chronometer may slow your software if you call it on very fast pieces of code. However, even in such situation, you will 79 | still be able to find the slower blocs by comparison. 80 | 81 | Start the timer anywhere with: 82 | DebugPlus.StartChronometer(); 83 | 84 | 85 | Stop the last timer with: 86 | DebugPlus.StopCurrentChronometer(); 87 | 88 | Get a detailled report with: 89 | DebugPlus.GetChronometerReport(); 90 | 91 | Example of report: 92 | Demo.MethodA : 237 ms 93 | Demo.MethodB : 182 ms 94 | Demo.MethodB.sub bloc : 18 ms 95 | Demo.MethodC : 163 ms (10 per call) 96 | Demo.MethodC : 54 ms (10 per call) 97 | 98 | Note : DebugPlus is a developper tool and should not be used at all during the release of your software to prevent performance and dependancy issues. 99 | 100 | ------- 101 | Support 102 | ------- 103 | 104 | If you want support for any issue, discuss about new features or simply say hello, please contact me at dumas18101@gmail.com or 105 | join the official thread on the Unity forum. 106 | 107 | -------------------------------------------------------------------------------- /Assets/DebugPlus/documentation.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8137f02c3420ad442860a372f82d0a9b 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Benoît 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Logs/Packages-Update.log: -------------------------------------------------------------------------------- 1 | 2 | === Thu Mar 7 13:27:55 2019 3 | 4 | Packages were changed. 5 | Update Mode: mergeDefaultDependencies 6 | 7 | The following packages were added: 8 | com.unity.analytics@3.2.2 9 | com.unity.purchasing@2.0.3 10 | com.unity.ads@2.3.1 11 | com.unity.textmeshpro@1.3.0 12 | com.unity.package-manager-ui@2.0.3 13 | com.unity.collab-proxy@1.2.15 14 | com.unity.modules.ai@1.0.0 15 | com.unity.modules.animation@1.0.0 16 | com.unity.modules.assetbundle@1.0.0 17 | com.unity.modules.audio@1.0.0 18 | com.unity.modules.cloth@1.0.0 19 | com.unity.modules.director@1.0.0 20 | com.unity.modules.imageconversion@1.0.0 21 | com.unity.modules.imgui@1.0.0 22 | com.unity.modules.jsonserialize@1.0.0 23 | com.unity.modules.particlesystem@1.0.0 24 | com.unity.modules.physics@1.0.0 25 | com.unity.modules.physics2d@1.0.0 26 | com.unity.modules.screencapture@1.0.0 27 | com.unity.modules.terrain@1.0.0 28 | com.unity.modules.terrainphysics@1.0.0 29 | com.unity.modules.tilemap@1.0.0 30 | com.unity.modules.ui@1.0.0 31 | com.unity.modules.uielements@1.0.0 32 | com.unity.modules.umbra@1.0.0 33 | com.unity.modules.unityanalytics@1.0.0 34 | com.unity.modules.unitywebrequest@1.0.0 35 | com.unity.modules.unitywebrequestassetbundle@1.0.0 36 | com.unity.modules.unitywebrequestaudio@1.0.0 37 | com.unity.modules.unitywebrequesttexture@1.0.0 38 | com.unity.modules.unitywebrequestwww@1.0.0 39 | com.unity.modules.vehicles@1.0.0 40 | com.unity.modules.video@1.0.0 41 | com.unity.modules.vr@1.0.0 42 | com.unity.modules.wind@1.0.0 43 | com.unity.modules.xr@1.0.0 44 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.ads": "2.3.1", 4 | "com.unity.analytics": "3.2.2", 5 | "com.unity.collab-proxy": "1.2.15", 6 | "com.unity.package-manager-ui": "2.0.3", 7 | "com.unity.purchasing": "2.0.3", 8 | "com.unity.textmeshpro": "1.3.0", 9 | "com.unity.modules.ai": "1.0.0", 10 | "com.unity.modules.animation": "1.0.0", 11 | "com.unity.modules.assetbundle": "1.0.0", 12 | "com.unity.modules.audio": "1.0.0", 13 | "com.unity.modules.cloth": "1.0.0", 14 | "com.unity.modules.director": "1.0.0", 15 | "com.unity.modules.imageconversion": "1.0.0", 16 | "com.unity.modules.imgui": "1.0.0", 17 | "com.unity.modules.jsonserialize": "1.0.0", 18 | "com.unity.modules.particlesystem": "1.0.0", 19 | "com.unity.modules.physics": "1.0.0", 20 | "com.unity.modules.physics2d": "1.0.0", 21 | "com.unity.modules.screencapture": "1.0.0", 22 | "com.unity.modules.terrain": "1.0.0", 23 | "com.unity.modules.terrainphysics": "1.0.0", 24 | "com.unity.modules.tilemap": "1.0.0", 25 | "com.unity.modules.ui": "1.0.0", 26 | "com.unity.modules.uielements": "1.0.0", 27 | "com.unity.modules.umbra": "1.0.0", 28 | "com.unity.modules.unityanalytics": "1.0.0", 29 | "com.unity.modules.unitywebrequest": "1.0.0", 30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 31 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 32 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 33 | "com.unity.modules.unitywebrequestwww": "1.0.0", 34 | "com.unity.modules.vehicles": "1.0.0", 35 | "com.unity.modules.video": "1.0.0", 36 | "com.unity.modules.vr": "1.0.0", 37 | "com.unity.modules.wind": "1.0.0", 38 | "com.unity.modules.xr": "1.0.0" 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | m_Volume: 1 7 | Rolloff Scale: 1 8 | Doppler Factor: 1 9 | Default Speaker Mode: 2 10 | m_SampleRate: 0 11 | m_DSPBufferSize: 1024 12 | m_VirtualVoiceCount: 512 13 | m_RealVoiceCount: 32 14 | m_SpatializerPlugin: 15 | m_AmbisonicDecoderPlugin: 16 | m_DisableAudio: 0 17 | m_VirtualizeEffects: 1 18 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 8 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: 8 | - enabled: 1 9 | path: Assets/Scenes/SampleScene.unity 10 | guid: 99c9720ab356a0642a771bea13969a05 11 | m_configObjects: {} 12 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 7 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 2 10 | m_DefaultBehaviorMode: 0 11 | m_SpritePackerMode: 0 12 | m_SpritePackerPaddingPower: 1 13 | m_EtcTextureCompressorBehavior: 1 14 | m_EtcTextureFastCompressor: 1 15 | m_EtcTextureNormalCompressor: 2 16 | m_EtcTextureBestCompressor: 4 17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd 18 | m_ProjectGenerationRootNamespace: 19 | m_UserGeneratedProjectSuffix: 20 | m_CollabEditorSettings: 21 | inProgressEnabled: 1 22 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 12 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0} 39 | m_PreloadedShaders: [] 40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 41 | type: 0} 42 | m_CustomRenderPipeline: {fileID: 0} 43 | m_TransparencySortMode: 0 44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 45 | m_DefaultRenderingPath: 1 46 | m_DefaultMobileRenderingPath: 1 47 | m_TierSettings: [] 48 | m_LightmapStripping: 0 49 | m_FogStripping: 0 50 | m_InstancingStripping: 0 51 | m_LightmapKeepPlain: 1 52 | m_LightmapKeepDirCombined: 1 53 | m_LightmapKeepDynamicPlain: 1 54 | m_LightmapKeepDynamicDirCombined: 1 55 | m_LightmapKeepShadowMask: 1 56 | m_LightmapKeepSubtractive: 1 57 | m_FogKeepLinear: 1 58 | m_FogKeepExp: 1 59 | m_FogKeepExp2: 1 60 | m_AlbedoSwatchInfos: [] 61 | m_LightsUseLinearIntensity: 0 62 | m_LightsUseColorTemperature: 0 63 | -------------------------------------------------------------------------------- /ProjectSettings/InputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!13 &1 4 | InputManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Axes: 8 | - serializedVersion: 3 9 | m_Name: Horizontal 10 | descriptiveName: 11 | descriptiveNegativeName: 12 | negativeButton: left 13 | positiveButton: right 14 | altNegativeButton: a 15 | altPositiveButton: d 16 | gravity: 3 17 | dead: 0.001 18 | sensitivity: 3 19 | snap: 1 20 | invert: 0 21 | type: 0 22 | axis: 0 23 | joyNum: 0 24 | - serializedVersion: 3 25 | m_Name: Vertical 26 | descriptiveName: 27 | descriptiveNegativeName: 28 | negativeButton: down 29 | positiveButton: up 30 | altNegativeButton: s 31 | altPositiveButton: w 32 | gravity: 3 33 | dead: 0.001 34 | sensitivity: 3 35 | snap: 1 36 | invert: 0 37 | type: 0 38 | axis: 0 39 | joyNum: 0 40 | - serializedVersion: 3 41 | m_Name: Fire1 42 | descriptiveName: 43 | descriptiveNegativeName: 44 | negativeButton: 45 | positiveButton: left ctrl 46 | altNegativeButton: 47 | altPositiveButton: mouse 0 48 | gravity: 1000 49 | dead: 0.001 50 | sensitivity: 1000 51 | snap: 0 52 | invert: 0 53 | type: 0 54 | axis: 0 55 | joyNum: 0 56 | - serializedVersion: 3 57 | m_Name: Fire2 58 | descriptiveName: 59 | descriptiveNegativeName: 60 | negativeButton: 61 | positiveButton: left alt 62 | altNegativeButton: 63 | altPositiveButton: mouse 1 64 | gravity: 1000 65 | dead: 0.001 66 | sensitivity: 1000 67 | snap: 0 68 | invert: 0 69 | type: 0 70 | axis: 0 71 | joyNum: 0 72 | - serializedVersion: 3 73 | m_Name: Fire3 74 | descriptiveName: 75 | descriptiveNegativeName: 76 | negativeButton: 77 | positiveButton: left shift 78 | altNegativeButton: 79 | altPositiveButton: mouse 2 80 | gravity: 1000 81 | dead: 0.001 82 | sensitivity: 1000 83 | snap: 0 84 | invert: 0 85 | type: 0 86 | axis: 0 87 | joyNum: 0 88 | - serializedVersion: 3 89 | m_Name: Jump 90 | descriptiveName: 91 | descriptiveNegativeName: 92 | negativeButton: 93 | positiveButton: space 94 | altNegativeButton: 95 | altPositiveButton: 96 | gravity: 1000 97 | dead: 0.001 98 | sensitivity: 1000 99 | snap: 0 100 | invert: 0 101 | type: 0 102 | axis: 0 103 | joyNum: 0 104 | - serializedVersion: 3 105 | m_Name: Mouse X 106 | descriptiveName: 107 | descriptiveNegativeName: 108 | negativeButton: 109 | positiveButton: 110 | altNegativeButton: 111 | altPositiveButton: 112 | gravity: 0 113 | dead: 0 114 | sensitivity: 0.1 115 | snap: 0 116 | invert: 0 117 | type: 1 118 | axis: 0 119 | joyNum: 0 120 | - serializedVersion: 3 121 | m_Name: Mouse Y 122 | descriptiveName: 123 | descriptiveNegativeName: 124 | negativeButton: 125 | positiveButton: 126 | altNegativeButton: 127 | altPositiveButton: 128 | gravity: 0 129 | dead: 0 130 | sensitivity: 0.1 131 | snap: 0 132 | invert: 0 133 | type: 1 134 | axis: 1 135 | joyNum: 0 136 | - serializedVersion: 3 137 | m_Name: Mouse ScrollWheel 138 | descriptiveName: 139 | descriptiveNegativeName: 140 | negativeButton: 141 | positiveButton: 142 | altNegativeButton: 143 | altPositiveButton: 144 | gravity: 0 145 | dead: 0 146 | sensitivity: 0.1 147 | snap: 0 148 | invert: 0 149 | type: 1 150 | axis: 2 151 | joyNum: 0 152 | - serializedVersion: 3 153 | m_Name: Horizontal 154 | descriptiveName: 155 | descriptiveNegativeName: 156 | negativeButton: 157 | positiveButton: 158 | altNegativeButton: 159 | altPositiveButton: 160 | gravity: 0 161 | dead: 0.19 162 | sensitivity: 1 163 | snap: 0 164 | invert: 0 165 | type: 2 166 | axis: 0 167 | joyNum: 0 168 | - serializedVersion: 3 169 | m_Name: Vertical 170 | descriptiveName: 171 | descriptiveNegativeName: 172 | negativeButton: 173 | positiveButton: 174 | altNegativeButton: 175 | altPositiveButton: 176 | gravity: 0 177 | dead: 0.19 178 | sensitivity: 1 179 | snap: 0 180 | invert: 1 181 | type: 2 182 | axis: 1 183 | joyNum: 0 184 | - serializedVersion: 3 185 | m_Name: Fire1 186 | descriptiveName: 187 | descriptiveNegativeName: 188 | negativeButton: 189 | positiveButton: joystick button 0 190 | altNegativeButton: 191 | altPositiveButton: 192 | gravity: 1000 193 | dead: 0.001 194 | sensitivity: 1000 195 | snap: 0 196 | invert: 0 197 | type: 0 198 | axis: 0 199 | joyNum: 0 200 | - serializedVersion: 3 201 | m_Name: Fire2 202 | descriptiveName: 203 | descriptiveNegativeName: 204 | negativeButton: 205 | positiveButton: joystick button 1 206 | altNegativeButton: 207 | altPositiveButton: 208 | gravity: 1000 209 | dead: 0.001 210 | sensitivity: 1000 211 | snap: 0 212 | invert: 0 213 | type: 0 214 | axis: 0 215 | joyNum: 0 216 | - serializedVersion: 3 217 | m_Name: Fire3 218 | descriptiveName: 219 | descriptiveNegativeName: 220 | negativeButton: 221 | positiveButton: joystick button 2 222 | altNegativeButton: 223 | altPositiveButton: 224 | gravity: 1000 225 | dead: 0.001 226 | sensitivity: 1000 227 | snap: 0 228 | invert: 0 229 | type: 0 230 | axis: 0 231 | joyNum: 0 232 | - serializedVersion: 3 233 | m_Name: Jump 234 | descriptiveName: 235 | descriptiveNegativeName: 236 | negativeButton: 237 | positiveButton: joystick button 3 238 | altNegativeButton: 239 | altPositiveButton: 240 | gravity: 1000 241 | dead: 0.001 242 | sensitivity: 1000 243 | snap: 0 244 | invert: 0 245 | type: 0 246 | axis: 0 247 | joyNum: 0 248 | - serializedVersion: 3 249 | m_Name: Submit 250 | descriptiveName: 251 | descriptiveNegativeName: 252 | negativeButton: 253 | positiveButton: return 254 | altNegativeButton: 255 | altPositiveButton: joystick button 0 256 | gravity: 1000 257 | dead: 0.001 258 | sensitivity: 1000 259 | snap: 0 260 | invert: 0 261 | type: 0 262 | axis: 0 263 | joyNum: 0 264 | - serializedVersion: 3 265 | m_Name: Submit 266 | descriptiveName: 267 | descriptiveNegativeName: 268 | negativeButton: 269 | positiveButton: enter 270 | altNegativeButton: 271 | altPositiveButton: space 272 | gravity: 1000 273 | dead: 0.001 274 | sensitivity: 1000 275 | snap: 0 276 | invert: 0 277 | type: 0 278 | axis: 0 279 | joyNum: 0 280 | - serializedVersion: 3 281 | m_Name: Cancel 282 | descriptiveName: 283 | descriptiveNegativeName: 284 | negativeButton: 285 | positiveButton: escape 286 | altNegativeButton: 287 | altPositiveButton: joystick button 1 288 | gravity: 1000 289 | dead: 0.001 290 | sensitivity: 1000 291 | snap: 0 292 | invert: 0 293 | type: 0 294 | axis: 0 295 | joyNum: 0 296 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/NetworkManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!149 &1 4 | NetworkManager: 5 | m_ObjectHideFlags: 0 6 | m_DebugLevel: 0 7 | m_Sendrate: 15 8 | m_AssetToPrefab: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_AutoSimulation: 1 23 | m_QueriesHitTriggers: 1 24 | m_QueriesStartInColliders: 1 25 | m_ChangeStopsCallbacks: 0 26 | m_CallbacksOnDisable: 1 27 | m_ReuseCollisionCallbacks: 1 28 | m_AutoSyncTransforms: 0 29 | m_AlwaysShowColliders: 0 30 | m_ShowColliderSleep: 1 31 | m_ShowColliderContacts: 0 32 | m_ShowColliderAABB: 0 33 | m_ContactArrowScale: 0.2 34 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 35 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 36 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 37 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 38 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 39 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | m_DefaultList: 7 | - type: 8 | m_NativeTypeID: 108 9 | m_ManagedTypePPtr: {fileID: 0} 10 | m_ManagedTypeFallback: 11 | defaultPresets: 12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea, 13 | type: 2} 14 | - type: 15 | m_NativeTypeID: 1020 16 | m_ManagedTypePPtr: {fileID: 0} 17 | m_ManagedTypeFallback: 18 | defaultPresets: 19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6, 20 | type: 2} 21 | - type: 22 | m_NativeTypeID: 1006 23 | m_ManagedTypePPtr: {fileID: 0} 24 | m_ManagedTypeFallback: 25 | defaultPresets: 26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9, 27 | type: 2} 28 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!129 &1 4 | PlayerSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 15 7 | productGUID: 03e81a0b67550444b883adfd4aee6a0e 8 | AndroidProfiler: 0 9 | AndroidFilterTouchesWhenObscured: 0 10 | AndroidEnableSustainedPerformanceMode: 0 11 | defaultScreenOrientation: 4 12 | targetDevice: 2 13 | useOnDemandResources: 0 14 | accelerometerFrequency: 60 15 | companyName: DefaultCompany 16 | productName: DebugPlus 17 | defaultCursor: {fileID: 0} 18 | cursorHotspot: {x: 0, y: 0} 19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1} 20 | m_ShowUnitySplashScreen: 1 21 | m_ShowUnitySplashLogo: 1 22 | m_SplashScreenOverlayOpacity: 1 23 | m_SplashScreenAnimation: 1 24 | m_SplashScreenLogoStyle: 1 25 | m_SplashScreenDrawMode: 0 26 | m_SplashScreenBackgroundAnimationZoom: 1 27 | m_SplashScreenLogoAnimationZoom: 1 28 | m_SplashScreenBackgroundLandscapeAspect: 1 29 | m_SplashScreenBackgroundPortraitAspect: 1 30 | m_SplashScreenBackgroundLandscapeUvs: 31 | serializedVersion: 2 32 | x: 0 33 | y: 0 34 | width: 1 35 | height: 1 36 | m_SplashScreenBackgroundPortraitUvs: 37 | serializedVersion: 2 38 | x: 0 39 | y: 0 40 | width: 1 41 | height: 1 42 | m_SplashScreenLogos: [] 43 | m_VirtualRealitySplashScreen: {fileID: 0} 44 | m_HolographicTrackingLossScreen: {fileID: 0} 45 | defaultScreenWidth: 1024 46 | defaultScreenHeight: 768 47 | defaultScreenWidthWeb: 960 48 | defaultScreenHeightWeb: 600 49 | m_StereoRenderingPath: 0 50 | m_ActiveColorSpace: 0 51 | m_MTRendering: 1 52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000 53 | iosShowActivityIndicatorOnLoading: -1 54 | androidShowActivityIndicatorOnLoading: -1 55 | iosAppInBackgroundBehavior: 0 56 | displayResolutionDialog: 1 57 | iosAllowHTTPDownload: 1 58 | allowedAutorotateToPortrait: 1 59 | allowedAutorotateToPortraitUpsideDown: 1 60 | allowedAutorotateToLandscapeRight: 1 61 | allowedAutorotateToLandscapeLeft: 1 62 | useOSAutorotation: 1 63 | use32BitDisplayBuffer: 1 64 | preserveFramebufferAlpha: 0 65 | disableDepthAndStencilBuffers: 0 66 | androidStartInFullscreen: 1 67 | androidRenderOutsideSafeArea: 0 68 | androidBlitType: 0 69 | defaultIsNativeResolution: 1 70 | macRetinaSupport: 1 71 | runInBackground: 1 72 | captureSingleScreen: 0 73 | muteOtherAudioSources: 0 74 | Prepare IOS For Recording: 0 75 | Force IOS Speakers When Recording: 0 76 | deferSystemGesturesMode: 0 77 | hideHomeButton: 0 78 | submitAnalytics: 1 79 | usePlayerLog: 1 80 | bakeCollisionMeshes: 0 81 | forceSingleInstance: 0 82 | resizableWindow: 0 83 | useMacAppStoreValidation: 0 84 | macAppStoreCategory: public.app-category.games 85 | gpuSkinning: 1 86 | graphicsJobs: 0 87 | xboxPIXTextureCapture: 0 88 | xboxEnableAvatar: 0 89 | xboxEnableKinect: 0 90 | xboxEnableKinectAutoTracking: 0 91 | xboxEnableFitness: 0 92 | visibleInBackground: 1 93 | allowFullscreenSwitch: 1 94 | graphicsJobMode: 0 95 | fullscreenMode: 1 96 | xboxSpeechDB: 0 97 | xboxEnableHeadOrientation: 0 98 | xboxEnableGuest: 0 99 | xboxEnablePIXSampling: 0 100 | metalFramebufferOnly: 0 101 | xboxOneResolution: 0 102 | xboxOneSResolution: 0 103 | xboxOneXResolution: 3 104 | xboxOneMonoLoggingLevel: 0 105 | xboxOneLoggingLevel: 1 106 | xboxOneDisableEsram: 0 107 | xboxOnePresentImmediateThreshold: 0 108 | switchQueueCommandMemory: 0 109 | vulkanEnableSetSRGBWrite: 0 110 | m_SupportedAspectRatios: 111 | 4:3: 1 112 | 5:4: 1 113 | 16:10: 1 114 | 16:9: 1 115 | Others: 1 116 | bundleVersion: 0.1 117 | preloadedAssets: [] 118 | metroInputSource: 0 119 | wsaTransparentSwapchain: 0 120 | m_HolographicPauseOnTrackingLoss: 1 121 | xboxOneDisableKinectGpuReservation: 0 122 | xboxOneEnable7thCore: 0 123 | isWsaHolographicRemotingEnabled: 0 124 | vrSettings: 125 | cardboard: 126 | depthFormat: 0 127 | enableTransitionView: 0 128 | daydream: 129 | depthFormat: 0 130 | useSustainedPerformanceMode: 0 131 | enableVideoLayer: 0 132 | useProtectedVideoMemory: 0 133 | minimumSupportedHeadTracking: 0 134 | maximumSupportedHeadTracking: 1 135 | hololens: 136 | depthFormat: 1 137 | depthBufferSharingEnabled: 0 138 | oculus: 139 | sharedDepthBuffer: 1 140 | dashSupport: 1 141 | enable360StereoCapture: 0 142 | protectGraphicsMemory: 0 143 | enableFrameTimingStats: 0 144 | useHDRDisplay: 0 145 | m_ColorGamuts: 00000000 146 | targetPixelDensity: 30 147 | resolutionScalingMode: 0 148 | androidSupportedAspectRatio: 1 149 | androidMaxAspectRatio: 2.1 150 | applicationIdentifier: {} 151 | buildNumber: {} 152 | AndroidBundleVersionCode: 1 153 | AndroidMinSdkVersion: 16 154 | AndroidTargetSdkVersion: 0 155 | AndroidPreferredInstallLocation: 1 156 | aotOptions: 157 | stripEngineCode: 1 158 | iPhoneStrippingLevel: 0 159 | iPhoneScriptCallOptimization: 0 160 | ForceInternetPermission: 0 161 | ForceSDCardPermission: 0 162 | CreateWallpaper: 0 163 | APKExpansionFiles: 0 164 | keepLoadedShadersAlive: 0 165 | StripUnusedMeshComponents: 1 166 | VertexChannelCompressionMask: 4054 167 | iPhoneSdkVersion: 988 168 | iOSTargetOSVersionString: 9.0 169 | tvOSSdkVersion: 0 170 | tvOSRequireExtendedGameController: 0 171 | tvOSTargetOSVersionString: 9.0 172 | uIPrerenderedIcon: 0 173 | uIRequiresPersistentWiFi: 0 174 | uIRequiresFullScreen: 1 175 | uIStatusBarHidden: 1 176 | uIExitOnSuspend: 0 177 | uIStatusBarStyle: 0 178 | iPhoneSplashScreen: {fileID: 0} 179 | iPhoneHighResSplashScreen: {fileID: 0} 180 | iPhoneTallHighResSplashScreen: {fileID: 0} 181 | iPhone47inSplashScreen: {fileID: 0} 182 | iPhone55inPortraitSplashScreen: {fileID: 0} 183 | iPhone55inLandscapeSplashScreen: {fileID: 0} 184 | iPhone58inPortraitSplashScreen: {fileID: 0} 185 | iPhone58inLandscapeSplashScreen: {fileID: 0} 186 | iPadPortraitSplashScreen: {fileID: 0} 187 | iPadHighResPortraitSplashScreen: {fileID: 0} 188 | iPadLandscapeSplashScreen: {fileID: 0} 189 | iPadHighResLandscapeSplashScreen: {fileID: 0} 190 | appleTVSplashScreen: {fileID: 0} 191 | appleTVSplashScreen2x: {fileID: 0} 192 | tvOSSmallIconLayers: [] 193 | tvOSSmallIconLayers2x: [] 194 | tvOSLargeIconLayers: [] 195 | tvOSLargeIconLayers2x: [] 196 | tvOSTopShelfImageLayers: [] 197 | tvOSTopShelfImageLayers2x: [] 198 | tvOSTopShelfImageWideLayers: [] 199 | tvOSTopShelfImageWideLayers2x: [] 200 | iOSLaunchScreenType: 0 201 | iOSLaunchScreenPortrait: {fileID: 0} 202 | iOSLaunchScreenLandscape: {fileID: 0} 203 | iOSLaunchScreenBackgroundColor: 204 | serializedVersion: 2 205 | rgba: 0 206 | iOSLaunchScreenFillPct: 100 207 | iOSLaunchScreenSize: 100 208 | iOSLaunchScreenCustomXibPath: 209 | iOSLaunchScreeniPadType: 0 210 | iOSLaunchScreeniPadImage: {fileID: 0} 211 | iOSLaunchScreeniPadBackgroundColor: 212 | serializedVersion: 2 213 | rgba: 0 214 | iOSLaunchScreeniPadFillPct: 100 215 | iOSLaunchScreeniPadSize: 100 216 | iOSLaunchScreeniPadCustomXibPath: 217 | iOSUseLaunchScreenStoryboard: 0 218 | iOSLaunchScreenCustomStoryboardPath: 219 | iOSDeviceRequirements: [] 220 | iOSURLSchemes: [] 221 | iOSBackgroundModes: 0 222 | iOSMetalForceHardShadows: 0 223 | metalEditorSupport: 1 224 | metalAPIValidation: 1 225 | iOSRenderExtraFrameOnPause: 0 226 | appleDeveloperTeamID: 227 | iOSManualSigningProvisioningProfileID: 228 | tvOSManualSigningProvisioningProfileID: 229 | iOSManualSigningProvisioningProfileType: 0 230 | tvOSManualSigningProvisioningProfileType: 0 231 | appleEnableAutomaticSigning: 0 232 | iOSRequireARKit: 0 233 | appleEnableProMotion: 0 234 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea 235 | templatePackageId: com.unity.template.3d@1.0.4 236 | templateDefaultScene: Assets/Scenes/SampleScene.unity 237 | AndroidTargetArchitectures: 5 238 | AndroidSplashScreenScale: 0 239 | androidSplashScreen: {fileID: 0} 240 | AndroidKeystoreName: 241 | AndroidKeyaliasName: 242 | AndroidBuildApkPerCpuArchitecture: 0 243 | AndroidTVCompatibility: 1 244 | AndroidIsGame: 1 245 | AndroidEnableTango: 0 246 | androidEnableBanner: 1 247 | androidUseLowAccuracyLocation: 0 248 | m_AndroidBanners: 249 | - width: 320 250 | height: 180 251 | banner: {fileID: 0} 252 | androidGamepadSupportLevel: 0 253 | resolutionDialogBanner: {fileID: 0} 254 | m_BuildTargetIcons: [] 255 | m_BuildTargetPlatformIcons: [] 256 | m_BuildTargetBatching: 257 | - m_BuildTarget: Standalone 258 | m_StaticBatching: 1 259 | m_DynamicBatching: 0 260 | - m_BuildTarget: tvOS 261 | m_StaticBatching: 1 262 | m_DynamicBatching: 0 263 | - m_BuildTarget: Android 264 | m_StaticBatching: 1 265 | m_DynamicBatching: 0 266 | - m_BuildTarget: iPhone 267 | m_StaticBatching: 1 268 | m_DynamicBatching: 0 269 | - m_BuildTarget: WebGL 270 | m_StaticBatching: 0 271 | m_DynamicBatching: 0 272 | m_BuildTargetGraphicsAPIs: 273 | - m_BuildTarget: AndroidPlayer 274 | m_APIs: 0b00000008000000 275 | m_Automatic: 1 276 | - m_BuildTarget: iOSSupport 277 | m_APIs: 10000000 278 | m_Automatic: 1 279 | - m_BuildTarget: AppleTVSupport 280 | m_APIs: 10000000 281 | m_Automatic: 0 282 | - m_BuildTarget: WebGLSupport 283 | m_APIs: 0b000000 284 | m_Automatic: 1 285 | m_BuildTargetVRSettings: 286 | - m_BuildTarget: Standalone 287 | m_Enabled: 0 288 | m_Devices: 289 | - Oculus 290 | - OpenVR 291 | m_BuildTargetEnableVuforiaSettings: [] 292 | openGLRequireES31: 0 293 | openGLRequireES31AEP: 0 294 | m_TemplateCustomTags: {} 295 | mobileMTRendering: 296 | Android: 1 297 | iPhone: 1 298 | tvOS: 1 299 | m_BuildTargetGroupLightmapEncodingQuality: [] 300 | m_BuildTargetGroupLightmapSettings: [] 301 | playModeTestRunnerEnabled: 0 302 | runPlayModeTestAsEditModeTest: 0 303 | actionOnDotNetUnhandledException: 1 304 | enableInternalProfiler: 0 305 | logObjCUncaughtExceptions: 1 306 | enableCrashReportAPI: 0 307 | cameraUsageDescription: 308 | locationUsageDescription: 309 | microphoneUsageDescription: 310 | switchNetLibKey: 311 | switchSocketMemoryPoolSize: 6144 312 | switchSocketAllocatorPoolSize: 128 313 | switchSocketConcurrencyLimit: 14 314 | switchScreenResolutionBehavior: 2 315 | switchUseCPUProfiler: 0 316 | switchApplicationID: 0x01004b9000490000 317 | switchNSODependencies: 318 | switchTitleNames_0: 319 | switchTitleNames_1: 320 | switchTitleNames_2: 321 | switchTitleNames_3: 322 | switchTitleNames_4: 323 | switchTitleNames_5: 324 | switchTitleNames_6: 325 | switchTitleNames_7: 326 | switchTitleNames_8: 327 | switchTitleNames_9: 328 | switchTitleNames_10: 329 | switchTitleNames_11: 330 | switchTitleNames_12: 331 | switchTitleNames_13: 332 | switchTitleNames_14: 333 | switchPublisherNames_0: 334 | switchPublisherNames_1: 335 | switchPublisherNames_2: 336 | switchPublisherNames_3: 337 | switchPublisherNames_4: 338 | switchPublisherNames_5: 339 | switchPublisherNames_6: 340 | switchPublisherNames_7: 341 | switchPublisherNames_8: 342 | switchPublisherNames_9: 343 | switchPublisherNames_10: 344 | switchPublisherNames_11: 345 | switchPublisherNames_12: 346 | switchPublisherNames_13: 347 | switchPublisherNames_14: 348 | switchIcons_0: {fileID: 0} 349 | switchIcons_1: {fileID: 0} 350 | switchIcons_2: {fileID: 0} 351 | switchIcons_3: {fileID: 0} 352 | switchIcons_4: {fileID: 0} 353 | switchIcons_5: {fileID: 0} 354 | switchIcons_6: {fileID: 0} 355 | switchIcons_7: {fileID: 0} 356 | switchIcons_8: {fileID: 0} 357 | switchIcons_9: {fileID: 0} 358 | switchIcons_10: {fileID: 0} 359 | switchIcons_11: {fileID: 0} 360 | switchIcons_12: {fileID: 0} 361 | switchIcons_13: {fileID: 0} 362 | switchIcons_14: {fileID: 0} 363 | switchSmallIcons_0: {fileID: 0} 364 | switchSmallIcons_1: {fileID: 0} 365 | switchSmallIcons_2: {fileID: 0} 366 | switchSmallIcons_3: {fileID: 0} 367 | switchSmallIcons_4: {fileID: 0} 368 | switchSmallIcons_5: {fileID: 0} 369 | switchSmallIcons_6: {fileID: 0} 370 | switchSmallIcons_7: {fileID: 0} 371 | switchSmallIcons_8: {fileID: 0} 372 | switchSmallIcons_9: {fileID: 0} 373 | switchSmallIcons_10: {fileID: 0} 374 | switchSmallIcons_11: {fileID: 0} 375 | switchSmallIcons_12: {fileID: 0} 376 | switchSmallIcons_13: {fileID: 0} 377 | switchSmallIcons_14: {fileID: 0} 378 | switchManualHTML: 379 | switchAccessibleURLs: 380 | switchLegalInformation: 381 | switchMainThreadStackSize: 1048576 382 | switchPresenceGroupId: 383 | switchLogoHandling: 0 384 | switchReleaseVersion: 0 385 | switchDisplayVersion: 1.0.0 386 | switchStartupUserAccount: 0 387 | switchTouchScreenUsage: 0 388 | switchSupportedLanguagesMask: 0 389 | switchLogoType: 0 390 | switchApplicationErrorCodeCategory: 391 | switchUserAccountSaveDataSize: 0 392 | switchUserAccountSaveDataJournalSize: 0 393 | switchApplicationAttribute: 0 394 | switchCardSpecSize: -1 395 | switchCardSpecClock: -1 396 | switchRatingsMask: 0 397 | switchRatingsInt_0: 0 398 | switchRatingsInt_1: 0 399 | switchRatingsInt_2: 0 400 | switchRatingsInt_3: 0 401 | switchRatingsInt_4: 0 402 | switchRatingsInt_5: 0 403 | switchRatingsInt_6: 0 404 | switchRatingsInt_7: 0 405 | switchRatingsInt_8: 0 406 | switchRatingsInt_9: 0 407 | switchRatingsInt_10: 0 408 | switchRatingsInt_11: 0 409 | switchLocalCommunicationIds_0: 410 | switchLocalCommunicationIds_1: 411 | switchLocalCommunicationIds_2: 412 | switchLocalCommunicationIds_3: 413 | switchLocalCommunicationIds_4: 414 | switchLocalCommunicationIds_5: 415 | switchLocalCommunicationIds_6: 416 | switchLocalCommunicationIds_7: 417 | switchParentalControl: 0 418 | switchAllowsScreenshot: 1 419 | switchAllowsVideoCapturing: 1 420 | switchAllowsRuntimeAddOnContentInstall: 0 421 | switchDataLossConfirmation: 0 422 | switchUserAccountLockEnabled: 0 423 | switchSupportedNpadStyles: 3 424 | switchNativeFsCacheSize: 32 425 | switchIsHoldTypeHorizontal: 0 426 | switchSupportedNpadCount: 8 427 | switchSocketConfigEnabled: 0 428 | switchTcpInitialSendBufferSize: 32 429 | switchTcpInitialReceiveBufferSize: 64 430 | switchTcpAutoSendBufferSizeMax: 256 431 | switchTcpAutoReceiveBufferSizeMax: 256 432 | switchUdpSendBufferSize: 9 433 | switchUdpReceiveBufferSize: 42 434 | switchSocketBufferEfficiency: 4 435 | switchSocketInitializeEnabled: 1 436 | switchNetworkInterfaceManagerInitializeEnabled: 1 437 | switchPlayerConnectionEnabled: 1 438 | ps4NPAgeRating: 12 439 | ps4NPTitleSecret: 440 | ps4NPTrophyPackPath: 441 | ps4ParentalLevel: 11 442 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000 443 | ps4Category: 0 444 | ps4MasterVersion: 01.00 445 | ps4AppVersion: 01.00 446 | ps4AppType: 0 447 | ps4ParamSfxPath: 448 | ps4VideoOutPixelFormat: 0 449 | ps4VideoOutInitialWidth: 1920 450 | ps4VideoOutBaseModeInitialWidth: 1920 451 | ps4VideoOutReprojectionRate: 60 452 | ps4PronunciationXMLPath: 453 | ps4PronunciationSIGPath: 454 | ps4BackgroundImagePath: 455 | ps4StartupImagePath: 456 | ps4StartupImagesFolder: 457 | ps4IconImagesFolder: 458 | ps4SaveDataImagePath: 459 | ps4SdkOverride: 460 | ps4BGMPath: 461 | ps4ShareFilePath: 462 | ps4ShareOverlayImagePath: 463 | ps4PrivacyGuardImagePath: 464 | ps4NPtitleDatPath: 465 | ps4RemotePlayKeyAssignment: -1 466 | ps4RemotePlayKeyMappingDir: 467 | ps4PlayTogetherPlayerCount: 0 468 | ps4EnterButtonAssignment: 1 469 | ps4ApplicationParam1: 0 470 | ps4ApplicationParam2: 0 471 | ps4ApplicationParam3: 0 472 | ps4ApplicationParam4: 0 473 | ps4DownloadDataSize: 0 474 | ps4GarlicHeapSize: 2048 475 | ps4ProGarlicHeapSize: 2560 476 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ 477 | ps4pnSessions: 1 478 | ps4pnPresence: 1 479 | ps4pnFriends: 1 480 | ps4pnGameCustomData: 1 481 | playerPrefsSupport: 0 482 | enableApplicationExit: 0 483 | resetTempFolder: 1 484 | restrictedAudioUsageRights: 0 485 | ps4UseResolutionFallback: 0 486 | ps4ReprojectionSupport: 0 487 | ps4UseAudio3dBackend: 0 488 | ps4SocialScreenEnabled: 0 489 | ps4ScriptOptimizationLevel: 0 490 | ps4Audio3dVirtualSpeakerCount: 14 491 | ps4attribCpuUsage: 0 492 | ps4PatchPkgPath: 493 | ps4PatchLatestPkgPath: 494 | ps4PatchChangeinfoPath: 495 | ps4PatchDayOne: 0 496 | ps4attribUserManagement: 0 497 | ps4attribMoveSupport: 0 498 | ps4attrib3DSupport: 0 499 | ps4attribShareSupport: 0 500 | ps4attribExclusiveVR: 0 501 | ps4disableAutoHideSplash: 0 502 | ps4videoRecordingFeaturesUsed: 0 503 | ps4contentSearchFeaturesUsed: 0 504 | ps4attribEyeToEyeDistanceSettingVR: 0 505 | ps4IncludedModules: [] 506 | monoEnv: 507 | splashScreenBackgroundSourceLandscape: {fileID: 0} 508 | splashScreenBackgroundSourcePortrait: {fileID: 0} 509 | spritePackerPolicy: 510 | webGLMemorySize: 256 511 | webGLExceptionSupport: 1 512 | webGLNameFilesAsHashes: 0 513 | webGLDataCaching: 1 514 | webGLDebugSymbols: 0 515 | webGLEmscriptenArgs: 516 | webGLModulesDirectory: 517 | webGLTemplate: APPLICATION:Default 518 | webGLAnalyzeBuildSize: 0 519 | webGLUseEmbeddedResources: 0 520 | webGLCompressionFormat: 1 521 | webGLLinkerTarget: 1 522 | webGLThreadsSupport: 0 523 | scriptingDefineSymbols: {} 524 | platformArchitecture: {} 525 | scriptingBackend: {} 526 | il2cppCompilerConfiguration: {} 527 | managedStrippingLevel: {} 528 | incrementalIl2cppBuild: {} 529 | allowUnsafeCode: 0 530 | additionalIl2CppArgs: 531 | scriptingRuntimeVersion: 1 532 | apiCompatibilityLevelPerPlatform: {} 533 | m_RenderingPath: 1 534 | m_MobileRenderingPath: 1 535 | metroPackageName: Template_3D 536 | metroPackageVersion: 537 | metroCertificatePath: 538 | metroCertificatePassword: 539 | metroCertificateSubject: 540 | metroCertificateIssuer: 541 | metroCertificateNotAfter: 0000000000000000 542 | metroApplicationDescription: Template_3D 543 | wsaImages: {} 544 | metroTileShortName: 545 | metroTileShowName: 0 546 | metroMediumTileShowName: 0 547 | metroLargeTileShowName: 0 548 | metroWideTileShowName: 0 549 | metroSupportStreamingInstall: 0 550 | metroLastRequiredScene: 0 551 | metroDefaultTileSize: 1 552 | metroTileForegroundText: 2 553 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0} 554 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, 555 | a: 1} 556 | metroSplashScreenUseBackgroundColor: 0 557 | platformCapabilities: {} 558 | metroTargetDeviceFamilies: {} 559 | metroFTAName: 560 | metroFTAFileTypes: [] 561 | metroProtocolName: 562 | metroCompilationOverrides: 1 563 | XboxOneProductId: 564 | XboxOneUpdateKey: 565 | XboxOneSandboxId: 566 | XboxOneContentId: 567 | XboxOneTitleId: 568 | XboxOneSCId: 569 | XboxOneGameOsOverridePath: 570 | XboxOnePackagingOverridePath: 571 | XboxOneAppManifestOverridePath: 572 | XboxOneVersion: 1.0.0.0 573 | XboxOnePackageEncryption: 0 574 | XboxOnePackageUpdateGranularity: 2 575 | XboxOneDescription: 576 | XboxOneLanguage: 577 | - enus 578 | XboxOneCapability: [] 579 | XboxOneGameRating: {} 580 | XboxOneIsContentPackage: 0 581 | XboxOneEnableGPUVariability: 0 582 | XboxOneSockets: {} 583 | XboxOneSplashScreen: {fileID: 0} 584 | XboxOneAllowedProductIds: [] 585 | XboxOnePersistentLocalStorageSize: 0 586 | XboxOneXTitleMemory: 8 587 | xboxOneScriptCompiler: 0 588 | XboxOneOverrideIdentityName: 589 | vrEditorSettings: 590 | daydream: 591 | daydreamIconForeground: {fileID: 0} 592 | daydreamIconBackground: {fileID: 0} 593 | cloudServicesEnabled: 594 | UNet: 1 595 | luminIcon: 596 | m_Name: 597 | m_ModelFolderPath: 598 | m_PortalFolderPath: 599 | luminCert: 600 | m_CertPath: 601 | m_PrivateKeyPath: 602 | luminIsChannelApp: 0 603 | luminVersion: 604 | m_VersionCode: 1 605 | m_VersionName: 606 | facebookSdkVersion: 7.9.4 607 | facebookAppId: 608 | facebookCookies: 1 609 | facebookLogging: 1 610 | facebookStatus: 1 611 | facebookXfbml: 0 612 | facebookFrictionlessRequests: 1 613 | apiCompatibilityLevel: 6 614 | cloudProjectId: 615 | framebufferDepthMemorylessMode: 0 616 | projectName: 617 | organizationId: 618 | cloudEnabled: 0 619 | enableNativePlatformBackendsForNewInputSystem: 0 620 | disableOldInputManagerSupport: 0 621 | legacyClampBlendShapeWeights: 0 622 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2018.3.0f2 2 | -------------------------------------------------------------------------------- /ProjectSettings/QualitySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!47 &1 4 | QualitySettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 5 7 | m_CurrentQuality: 4 8 | m_QualitySettings: 9 | - serializedVersion: 2 10 | name: Very Low 11 | pixelLightCount: 0 12 | shadows: 0 13 | shadowResolution: 0 14 | shadowProjection: 1 15 | shadowCascades: 1 16 | shadowDistance: 15 17 | shadowNearPlaneOffset: 3 18 | shadowCascade2Split: 0.33333334 19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 20 | shadowmaskMode: 0 21 | blendWeights: 1 22 | textureQuality: 1 23 | anisotropicTextures: 0 24 | antiAliasing: 0 25 | softParticles: 0 26 | softVegetation: 0 27 | realtimeReflectionProbes: 0 28 | billboardsFaceCameraPosition: 0 29 | vSyncCount: 0 30 | lodBias: 0.3 31 | maximumLODLevel: 0 32 | particleRaycastBudget: 4 33 | asyncUploadTimeSlice: 2 34 | asyncUploadBufferSize: 16 35 | resolutionScalingFixedDPIFactor: 1 36 | excludedTargetPlatforms: [] 37 | - serializedVersion: 2 38 | name: Low 39 | pixelLightCount: 0 40 | shadows: 0 41 | shadowResolution: 0 42 | shadowProjection: 1 43 | shadowCascades: 1 44 | shadowDistance: 20 45 | shadowNearPlaneOffset: 3 46 | shadowCascade2Split: 0.33333334 47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 48 | shadowmaskMode: 0 49 | blendWeights: 2 50 | textureQuality: 0 51 | anisotropicTextures: 0 52 | antiAliasing: 0 53 | softParticles: 0 54 | softVegetation: 0 55 | realtimeReflectionProbes: 0 56 | billboardsFaceCameraPosition: 0 57 | vSyncCount: 0 58 | lodBias: 0.4 59 | maximumLODLevel: 0 60 | particleRaycastBudget: 16 61 | asyncUploadTimeSlice: 2 62 | asyncUploadBufferSize: 16 63 | resolutionScalingFixedDPIFactor: 1 64 | excludedTargetPlatforms: [] 65 | - serializedVersion: 2 66 | name: Medium 67 | pixelLightCount: 1 68 | shadows: 1 69 | shadowResolution: 0 70 | shadowProjection: 1 71 | shadowCascades: 1 72 | shadowDistance: 20 73 | shadowNearPlaneOffset: 3 74 | shadowCascade2Split: 0.33333334 75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 76 | shadowmaskMode: 0 77 | blendWeights: 2 78 | textureQuality: 0 79 | anisotropicTextures: 1 80 | antiAliasing: 0 81 | softParticles: 0 82 | softVegetation: 0 83 | realtimeReflectionProbes: 0 84 | billboardsFaceCameraPosition: 0 85 | vSyncCount: 1 86 | lodBias: 0.7 87 | maximumLODLevel: 0 88 | particleRaycastBudget: 64 89 | asyncUploadTimeSlice: 2 90 | asyncUploadBufferSize: 16 91 | resolutionScalingFixedDPIFactor: 1 92 | excludedTargetPlatforms: [] 93 | - serializedVersion: 2 94 | name: High 95 | pixelLightCount: 2 96 | shadows: 2 97 | shadowResolution: 1 98 | shadowProjection: 1 99 | shadowCascades: 2 100 | shadowDistance: 40 101 | shadowNearPlaneOffset: 3 102 | shadowCascade2Split: 0.33333334 103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 104 | shadowmaskMode: 1 105 | blendWeights: 2 106 | textureQuality: 0 107 | anisotropicTextures: 1 108 | antiAliasing: 2 109 | softParticles: 0 110 | softVegetation: 1 111 | realtimeReflectionProbes: 1 112 | billboardsFaceCameraPosition: 1 113 | vSyncCount: 1 114 | lodBias: 1 115 | maximumLODLevel: 0 116 | particleRaycastBudget: 256 117 | asyncUploadTimeSlice: 2 118 | asyncUploadBufferSize: 16 119 | resolutionScalingFixedDPIFactor: 1 120 | excludedTargetPlatforms: [] 121 | - serializedVersion: 2 122 | name: Very High 123 | pixelLightCount: 3 124 | shadows: 2 125 | shadowResolution: 2 126 | shadowProjection: 1 127 | shadowCascades: 2 128 | shadowDistance: 40 129 | shadowNearPlaneOffset: 3 130 | shadowCascade2Split: 0.33333334 131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 132 | shadowmaskMode: 1 133 | blendWeights: 4 134 | textureQuality: 0 135 | anisotropicTextures: 1 136 | antiAliasing: 4 137 | softParticles: 1 138 | softVegetation: 1 139 | realtimeReflectionProbes: 1 140 | billboardsFaceCameraPosition: 1 141 | vSyncCount: 1 142 | lodBias: 1.5 143 | maximumLODLevel: 0 144 | particleRaycastBudget: 1024 145 | asyncUploadTimeSlice: 2 146 | asyncUploadBufferSize: 16 147 | resolutionScalingFixedDPIFactor: 1 148 | excludedTargetPlatforms: [] 149 | - serializedVersion: 2 150 | name: Ultra 151 | pixelLightCount: 4 152 | shadows: 2 153 | shadowResolution: 2 154 | shadowProjection: 1 155 | shadowCascades: 4 156 | shadowDistance: 150 157 | shadowNearPlaneOffset: 3 158 | shadowCascade2Split: 0.33333334 159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667} 160 | shadowmaskMode: 1 161 | blendWeights: 4 162 | textureQuality: 0 163 | anisotropicTextures: 1 164 | antiAliasing: 4 165 | softParticles: 1 166 | softVegetation: 1 167 | realtimeReflectionProbes: 1 168 | billboardsFaceCameraPosition: 1 169 | vSyncCount: 1 170 | lodBias: 2 171 | maximumLODLevel: 0 172 | particleRaycastBudget: 4096 173 | asyncUploadTimeSlice: 2 174 | asyncUploadBufferSize: 16 175 | resolutionScalingFixedDPIFactor: 1 176 | excludedTargetPlatforms: [] 177 | m_PerPlatformDefaultQuality: 178 | Android: 2 179 | Nintendo 3DS: 5 180 | Nintendo Switch: 5 181 | PS4: 5 182 | PSP2: 2 183 | Standalone: 5 184 | Tizen: 2 185 | WebGL: 3 186 | WiiU: 5 187 | Windows Store Apps: 5 188 | XboxOne: 5 189 | iPhone: 2 190 | tvOS: 2 191 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - PostProcessing 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.1 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_TestInitMode: 0 13 | CrashReportingSettings: 14 | m_EventUrl: https://perf-events.cloud.unity3d.com 15 | m_Enabled: 0 16 | m_LogBufferSize: 10 17 | m_CaptureEditorExceptions: 1 18 | UnityPurchasingSettings: 19 | m_Enabled: 0 20 | m_TestMode: 0 21 | UnityAnalyticsSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | m_InitializeOnStartup: 1 25 | UnityAdsSettings: 26 | m_Enabled: 0 27 | m_InitializeOnStartup: 1 28 | m_TestMode: 0 29 | m_IosGameId: 30 | m_AndroidGameId: 31 | m_GameIds: {} 32 | m_GameId: 33 | PerformanceReportingSettings: 34 | m_Enabled: 0 35 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_RenderPipeSettingsPath: 10 | m_FixedTimeStep: 0.016666668 11 | m_MaxDeltaTime: 0.05 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![please report broken links](https://i.postimg.cc/PqxsTgRG/demo.jpg) 2 | 3 | **Follow me on twitter !** 4 | 5 | # DebugPlus 6 | You already like Debug.DrawLine and Log? You will love DebugPlus' DrawMesh, DrawSphere, LogOnScreen... 7 | 8 | DebugPlus brings features that are missing in Unity Debug, allowing to draw gizmos and logs at run time, from anywhere in your code with a single line. Specify optional color, duration and matrix in a fluent way. 9 | 10 | This free and open-source asset is in beta, you are welcome to report any issue in the github issue page. It will be released on the asset store when beta testing is done. 11 | 12 | ## Gizmos 13 | Gizmos are powerfull for debugging, but Unity Debug only offers Line and Ray. DebugPlus adds all built-in gizmos: 14 | - DrawCube 15 | - DrawSphere 16 | - DrawMesh 17 | - DrawIcon 18 | - etc. 19 | 20 | Examples: 21 | 22 | DebugPlus.DrawWireSphere(transform.position, 1).Color(Color.blue); 23 | DebugPlus.DrawCube(transform.position, new Vector3(1, 2, 1)).Color(Color.red).Duration(10).Matrix(m); 24 | 25 | 26 | 27 | ## Log on screen 28 | Console logs are sweet, but sometimes it's more convienent to write things directly on the screen. Inspired by Unreal Engine 4, DebugPlus LogOnScreen let you write your logs with color and duration on the top left corner of your GUI. 29 | 30 | Examples: 31 | 32 | DebugPlus.LogOnScreen("motion " + debugMotion).Color(Color.green); 33 | DebugPlus.LogOnScreen("An excpetion occured during played update : " + e.Message).Color(Color.red).Duration(10); 34 | 35 | Note : on the first call to LogOnScreen, DebugPlus will create a special canvas that could mess with your existing GUI. Please report issues. 36 | 37 | ## Planned features 38 | DrawArrow, DrawDisc, DrawText at a world position... I'm open to suggestions ! 39 | --------------------------------------------------------------------------------