A Unity runtime inspection plugin for fun
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 line
2.5KB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.IO;
  5. using UnityEngine;
  6. namespace Dissonance.Inspector
  7. {
  8. public class ObjectInspector
  9. {
  10. public static void Log<T>() where T : UnityEngine.Object
  11. {
  12. Instance[] instances = Inspect<T>();
  13. string[] filelines = new string[instances.Length];
  14. for (int i = 0; i < instances.Length; i++)
  15. {
  16. filelines[i] = instances[i].ToString() + ",";
  17. }
  18. Debug.Log("ObjectInspector Log dump\n["+string.Join(",\n", filelines)+"]");
  19. }
  20. public static void LogNames<T>() where T : UnityEngine.Object
  21. {
  22. Debug.Log(string.Join("\n", InspectNames<T>()));
  23. }
  24. public static void LogAll()
  25. {
  26. Log<UnityEngine.Object>();
  27. }
  28. public static void LogNamesAll()
  29. {
  30. LogNames<UnityEngine.Object>();
  31. }
  32. public static void Dump<T>(string filename) where T : UnityEngine.Object
  33. {
  34. Instance[] instances = Inspect<T>();
  35. string[] filelines = new string[instances.Length];
  36. for (int i = 0; i < instances.Length; i++)
  37. {
  38. filelines[i] = instances[i].ToString()+",";
  39. }
  40. File.WriteAllLines(filename, filelines);
  41. }
  42. public static void DumpNames<T>(string filename) where T : UnityEngine.Object
  43. {
  44. File.WriteAllLines(filename, InspectNames<T>());
  45. }
  46. public static void DumpAll(string filename)
  47. {
  48. Dump<UnityEngine.Object>(filename);
  49. }
  50. public static void DumpNamesAll(string filename)
  51. {
  52. DumpNames<UnityEngine.Object>(filename);
  53. }
  54. public static Instance[] Inspect<T>() where T : UnityEngine.Object
  55. {
  56. T[] objects = UnityEngine.Object.FindObjectsOfType<T>();
  57. Instance[] instances = new Instance[objects.Length];
  58. for (int i = 0; i < objects.Length; i++)
  59. {
  60. instances[i] = new Instance(objects[i]);
  61. }
  62. return instances;
  63. }
  64. public static string[] InspectNames<T>() where T : UnityEngine.Object
  65. {
  66. T[] objects = UnityEngine.Object.FindObjectsOfType<T>();
  67. string[] names = new string[objects.Length];
  68. for(int i = 0; i < objects.Length; i++)
  69. {
  70. names[i] = objects[i].name;
  71. }
  72. return names;
  73. }
  74. }
  75. }