示例#1
0
    void PrintCompos()
    {
        toDebug.Sort(CompareComponentByTypeThenGameObject);
        System.Type t = null;

        foreach (var c in toDebug)
        {
            if (t != c.GetType())
            {
                t = c.GetType();
                if (!registeredTypes.ContainsKey(t))
                {
                    registeredTypes.Add(t, T_INIT_OPEN);
                }
                registeredTypes[t] = EditorGUILayout.Foldout(registeredTypes[t], t.Name);
            }

            if (registeredTypes[t])
            {
                Debugable d = c as Debugable;

                EditorGUI.indentLevel++;

                if (!registeredD.ContainsKey(d))
                {
                    registeredD.Add(d, D_INIT_OPEN);
                }

                registeredD[d] = EditorGUILayout.Foldout(registeredD[d], c.gameObject.name);
                if (registeredD[d])
                {
                    EditorGUI.indentLevel++;
                    d.ForDebugWindow();
                    EditorGUI.indentLevel--;
                }
                EditorGUI.indentLevel--;
            }
        }
    }
示例#2
0
    void PrintGO()
    {
        toDebug.Sort(CompareComponentByGameObjectThenType);
        GameObject go = null;

        foreach (var c in toDebug)
        {
            if (go != c.gameObject)
            {
                go = c.gameObject;
                if (!registeredGO.ContainsKey(go))
                {
                    registeredGO.Add(go, GO_INIT_OPEN);
                }
                registeredGO[go] = EditorGUILayout.Foldout(registeredGO[go], go.name);
            }

            if (registeredGO[go])
            {
                Debugable d = c as Debugable;

                EditorGUI.indentLevel++;
                if (!registeredD.ContainsKey(d))
                {
                    registeredD.Add(d, D_INIT_OPEN);
                }

                registeredD[d] = EditorGUILayout.Foldout(registeredD[d], c.GetType().Name);
                if (registeredD[d])
                {
                    EditorGUI.indentLevel++;
                    d.ForDebugWindow();
                    EditorGUI.indentLevel--;
                }
                EditorGUI.indentLevel--;
            }
        }
    }
示例#3
0
 /// <summary>
 /// Outputs the debug info for a child member of the class.
 /// </summary>
 /// <param name="C"></param>
 /// <returns>The formatted string of child class member values.</returns>
 /// <remarks>Used for inline debug output, returning the string "null" if the child is null.</remarks>
 /// <example>
 /// An example implementation of DebugInfo() for a class with debuggable members:
 /// <code>
 /// public override string DebugInfo()
 /// {
 ///     return string.Format("M1: {0}, M2: {1}, M3: {2}", member1, member2, DebugInfo(member3));
 /// }
 /// </code>
 /// </example>
 public static string DebugInfo(Debugable C)
 {
     return(C == null ? "null" : C.DebugInfo());
 }