[0]prefab不能获取子节点var属性

2.12.2版本,只有Scene.open的方式创建的节点可以获取子节点下的var属性,其实就是别的例如prefab.create和列表渲染子节点都没有给view传值。
目前修改方法是第一个节点创建之后就直接赋值给view,也就是最开始的父节点。
Laya.SceneUtils.createComp=function(uiView,comp,view,dataMap,initTool,alterRoot=false){
                if (uiView.type=="Scene3D"||uiView.type=="Sprite3D"){
                    var outBatchSprits=[];
                    var scene3D=Laya["Utils3D"]["_createSceneByJsonForMaker"](uiView,outBatchSprits,initTool);
                    if (uiView.type=="Sprite3D")
                        Laya["StaticBatchManager"].combine(scene3D,outBatchSprits);
                    else
                        Laya["StaticBatchManager"].combine(null,outBatchSprits);
                    return scene3D;
                }
                comp=comp || Laya.SceneUtils.getCompInstance(uiView);
                if(view==null){
                    view = comp;//修改部分
                }
                if (!comp){
                    if (uiView.props && uiView.props.runtime)
                        console.warn("runtime not found:"+uiView.props.runtime);
                    else
                        console.warn("can not create:"+uiView.type);
                    return null;
                };
                var child=uiView.child;
                if (child){
                    var isList=comp["_$componentType"]=="List";
                    for (var i=0,n=child.length;i < n;i++){
                        var node=child[i];
                        if (comp.hasOwnProperty("itemRender")&& (node.props.name=="render" || node.props.renderType==="render")){
                            comp["itemRender"]=node;
                        }else if (node.type=="Graphic"){
                            Laya.ClassUtils["_addGraphicsToSprite"](node,comp);
                        }else if (Laya.ClassUtils["_isDrawType"](node.type)){
                            Laya.ClassUtils["_addGraphicToSprite"](node,comp,true);
                        }else {
                            if (isList){
                                var arr=[];
                                var tChild=Laya.SceneUtils.createComp(node,null,alterRoot?comp:view,arr,initTool);
                                if (arr.length) tChild["_$bindData"]=arr;
                            }else{
                                tChild=Laya.SceneUtils.createComp(node,null,alterRoot?comp:view,dataMap,initTool);
                            }
                            if (node.type=="Script"){
                                if ((tChild instanceof Laya.Component )){
                                    comp._addComponentInstance(tChild);
                                }else {
                                    if ("owner" in tChild){
                                        tChild["owner"]=comp;
                                    }else if ("target" in tChild){
                                        tChild["target"]=comp;
                                    }
                                }
                            }else if (node.props.renderType=="mask" || node.props.name=="mask"){
                                comp.mask=tChild;
                            }else {
                                (tChild instanceof Laya.Node )&& comp.addChild(tChild);
                            }
                        }
                    }
                };
                var props=uiView.props;
                for (var prop in props){
                    var value=props[prop];
                    if ((typeof value=='string')&& (value.indexOf("@node:")>=0 || value.indexOf("@Prefab:")>=0)){
                        if (initTool){
                            initTool.addNodeRef(comp,prop,value);
                        }
                    }else{
                        Laya.SceneUtils["setCompValue"](comp,prop,value,view,dataMap);
                    }
                }
                if (comp._afterInited){
                    comp._afterInited();
                }
                if (uiView.compId && initTool && initTool["_idMap"]){
                    initTool["_idMap"][uiView.compId]=comp;
                }
                return comp;
            }
已邀请:

要回复问题请先

商务合作
商务合作