private GameObjectNode load(Resource res, GameObject parent, GameObjectNode parentGon)
    {
        Object o = Resources.Load(res.getPath());

        if (o == null)
        {
            Logger.warn(Module.Resource, "Resources.Load:" + res + " failed!");
            return(null);
        }
        if (res.getType() == Resource.Type.Font)
        {
            GameObjectNode g = new GameObjectNode(o as GameObject);
            return(g);
        }
        GameObject obj = GameObject.Instantiate(o) as GameObject;

        GameObjectNode gon = new GameObjectNode(obj);

        if (parentGon != null)
        {
            parentGon.addChild(gon);
        }

        List <Resource> ress = res.getChildren();

        if (ress != null && ress.Count > 0)
        {
            foreach (Resource r in ress)
            {
                load(r, obj, gon);
            }
        }

        obj.transform.parent        = parent.transform;
        obj.transform.name          = subtractBracket(obj.transform.name);
        obj.transform.localScale    = res.getScale();
        obj.transform.rotation      = res.getAngle();;
        obj.transform.localPosition = res.getPosition();

        return(gon);
    }