| using System.Collections; | 
| using System.Collections.Generic; | 
| using UnityEngine; | 
| using System; | 
|   | 
| public class FieldPrint | 
| { | 
|   | 
|     public static string PrintFields(object _object) | 
|     { | 
|         if (_object == null) | 
|         { | 
|             return string.Empty; | 
|         } | 
|   | 
|         var fields = _object.GetType().GetFields(); | 
|         var contents = new string[fields.Length]; | 
|         for (int i = 0; i < fields.Length; i++) | 
|         { | 
|             var field = fields[i]; | 
|             var fieldContent = field.GetValue(_object); | 
|             contents[i] = string.Format("\"{0}\":{1}", field.Name, fieldContent); | 
|         } | 
|   | 
|         return string.Join(";  ", contents); | 
|     } | 
|   | 
|     public static List<string> PrintFieldsExpand(object _object, bool _includeArray) | 
|     { | 
|         if (_object == null) | 
|         { | 
|             return null; | 
|         } | 
|   | 
|         var fields = _object.GetType().GetFields(); | 
|         var contents = new List<string>(); | 
|         for (int i = 0; i < fields.Length; i++) | 
|         { | 
|             var field = fields[i]; | 
|             var fieldContent = field.GetValue(_object); | 
|             if (fieldContent is Array) | 
|             { | 
|                 contents.AddRange(PrintArray(field.Name, fieldContent)); | 
|             } | 
|             else | 
|             { | 
|                 contents.Add(string.Format("\"{0}\":{1}", field.Name, fieldContent)); | 
|             } | 
|         } | 
|   | 
|         return contents; | 
|     } | 
|   | 
|     public static string[] PrintArray(string _name, object _object) | 
|     { | 
|         var objects = _object as Array; | 
|         var contents = new string[objects.Length]; | 
|         for (int i = 0; i < objects.Length; i++) | 
|         { | 
|             var o = objects.GetValue(i); | 
|             var type = o.GetType(); | 
|   | 
|             if (type.Name == "String") | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->({2}){3}", _name, i, type.Name, (String)o); | 
|             } | 
|             else if (type.Name == "UInt32") | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->({2}){3}", _name, i, type.Name, (UInt32)o); | 
|             } | 
|             else if (type.Name == "Byte") | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->({2}){3}", _name, i, type.Name, (Byte)o); | 
|             } | 
|             else if (type.Name == "UInt16") | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->({2}){3}", _name, i, type.Name, (UInt16)o); | 
|             } | 
|             else if (type.Name == "Single") | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->({2}){3}", _name, i, type.Name, (float)o); | 
|             } | 
|             else if (type.Name == "Boolean") | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->({2}){3}", _name, i, type.Name, (bool)o); | 
|             } | 
|             else if (type.Name == "Int32") | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->({2}){3}", _name, i, type.Name, (int)o); | 
|             } | 
|             else | 
|             { | 
|                 contents[i] = string.Format("\"{0}\"[{1}]-->{2}", _name, i, PrintFields(o)); | 
|             } | 
|         } | 
|   | 
|         return contents; | 
|     } | 
|   | 
| } |