예제 #1
0
    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);
    }