static float DrawFieldSubData(float x, float y, float w, float h, string fiName, ref object data, float labelSize, bool check = true) { float hSize = h; Rect rt = new Rect(x, y, w, h); string name; string typeName = data.GetType().ToString().Replace("UnityEngine.", ""); if (data is int) { int value = (int)data; name = "(int) " + fiName; value = GUITools.IntField(rt, name, value, labelSize); data = value; } else if (data is float) { float value = (float)data; name = "(float) " + fiName; value = GUITools.FloatField(rt, name, value, labelSize); data = value; } else if (data is long) { long value = (long)data; name = "(long) " + fiName; value = GUITools.LongField(rt, name, value, labelSize); data = value; } else if (data is double) { double value = (double)data; name = "(double) " + fiName; value = GUITools.DoubleField(rt, name, value, labelSize); data = value; } else if (data is string) { string value = data as string; name = "(string) " + fiName; value = GUITools.TextField(rt, name, value, labelSize); data = value; } else if (data is bool) { bool value = (bool)data; name = "(bool) " + fiName; Rect rtSub = new Rect(rt.x, rt.y + 6, labelSize, rt.height - 6); GUITools.LabelField(rtSub, name); rtSub.x += rtSub.width; rtSub.width = rt.width - (rtSub.x - rt.x); value = EditorGUI.ToggleLeft(rtSub, "", value); data = value; } else if (data is System.Enum) { object value = data; name = "(" + data.GetType() + ") " + fiName; value = GUITools.EnumPopup(rt, name, (System.Enum)value, labelSize); data = value; } else if (data is AnimationCurve) { AnimationCurve value = data as AnimationCurve; name = "(" + typeName + ") " + fiName; value = GUITools.CurveField(rt, name, value, labelSize); data = value; } else if (data is Color) { Color value = (Color)data; name = "(" + typeName + ") " + fiName; value = GUITools.ColorField(rt, name, value, labelSize); data = value; } else if (data is System.DateTime) { System.DateTime value = (System.DateTime)data; int year = value.Year, month = value.Month, day = value.Day, hour = value.Hour, minute = value.Minute, second = value.Second, millisecond = value.Millisecond; int dummy, flush = 0; Rect rtSub = rt; name = "(System.DateTime)" + fiName; rtSub.width = 300; dummy = year; year = GUITools.IntField(rtSub, name, year, labelSize); if (year != dummy) { flush = 1; } rtSub.x += rtSub.width; rtSub.width = 10; GUITools.LabelField(rtSub, "/"); rtSub.x += rtSub.width; rtSub.width = 30; dummy = month; month = GUITools.IntField(rtSub, "월", month, 0); if (month != dummy) { flush = 1; } rtSub.x += rtSub.width; rtSub.width = 10; GUITools.LabelField(rtSub, "/"); rtSub.x += rtSub.width; rtSub.width = 30; dummy = day; day = GUITools.IntField(rtSub, "일", day, 0); if (day != dummy) { flush = 1; } rtSub.x += rtSub.width; rtSub.width = 30; GUITools.LabelField(rtSub, "-", TextAnchor.MiddleCenter); rtSub.x += rtSub.width; rtSub.width = 30; dummy = hour; hour = GUITools.IntField(rtSub, "시", hour, 0); if (hour != dummy) { flush = 1; } rtSub.x += rtSub.width; rtSub.width = 10; GUITools.LabelField(rtSub, ":"); rtSub.x += rtSub.width; rtSub.width = 30; dummy = minute; minute = GUITools.IntField(rtSub, "분", minute, 0); if (minute != dummy) { flush = 1; } rtSub.x += rtSub.width; rtSub.width = 10; GUITools.LabelField(rtSub, ":"); rtSub.x += rtSub.width; rtSub.width = 30; dummy = second; second = GUITools.IntField(rtSub, "초", second, 0); if (second != dummy) { flush = 1; } rtSub.x += rtSub.width; rtSub.width = 10; GUITools.LabelField(rtSub, ":"); rtSub.x += rtSub.width; rtSub.width = 30; dummy = millisecond; millisecond = GUITools.IntField(rtSub, "초2", millisecond, 0); if (millisecond != dummy) { flush = 1; } rtSub.x += rtSub.width; if (flush == 1) { value = new System.DateTime(year, month, day, hour, minute, second, millisecond); } data = value; } else { if (check == true) { name = "(" + typeName + ")" + fiName; GUITools.LabelField(rt, name); } } return(hSize); }