public static MyJson.IJsonNode Parser(GameObject obj, NeedList needList = null) { AssetMgr.Reset(); MyJson.JsonNode_Object json = new MyJson.JsonNode_Object(); Debug.Log("ParserObj:" + obj.name); var comps = obj.GetComponents <Component>(); MyJson.JsonNode_Array jsoncs = new MyJson.JsonNode_Array(); json["name"] = new MyJson.JsonNode_ValueString(obj.name); json["active"] = new MyJson.JsonNode_ValueNumber(obj.activeSelf); json["_id"] = new MyJson.JsonNode_ValueNumber(ObjToID(obj)); json["coms"] = jsoncs; foreach (var c in comps) { if (c == null) { Debug.LogWarning("--组件丢失"); } else { Type type = c.GetType(); var pp = ComponentParser.Instance.GetParser(type); if (pp != null) { MyJson.JsonNode_Object jsonc = new MyJson.JsonNode_Object(); jsonc["type"] = new MyJson.JsonNode_ValueString(type.ToString()); if (c is Behaviour) { jsonc["enabled"] = new MyJson.JsonNode_ValueNumber((c as Behaviour).enabled); } jsonc["param"] = pp.Parser(c, needList); Debug.Log("--" + c.name + "<" + type.ToString() + ">:" + jsonc["param"].ToString()); jsoncs.Add(jsonc); } else { Debug.LogWarning("--" + c.name + "<" + type.ToString() + ">" + "没有处理器"); } } } if (obj.transform.childCount > 0) { MyJson.JsonNode_Array jsonsubarray = new MyJson.JsonNode_Array(); json["child"] = jsonsubarray; foreach (Transform t in obj.transform) { jsonsubarray.Add(Parser(t.gameObject, needList)); } } Debug.Log("ParserObjFinish:" + obj.name); AssetMgr.Reset(); return(json); }