如题,如果node的active为true时,这时修改mesh后,场景模型显示会及时改变,但是node的active为false时,修改mesh后再active设置为true,此时模型显示不会更新,这种情况怎么手动刷新显示?
modelComp._updateModels()
试试?
没用,this.meshRender._updateModels();没有刷新显示
经过尝试,如果在节点active=false或parent=null时更换了mesh,立即调用_updateModels不生效,但是在active = true并且parent不为空的时候,_updateModels才有效,但是如果必须要在显示情况下更新模型,那就没意义了,期望的就是在非显示状态下赋值mesh逻辑附近就更新,而不需要在显示后再去操作一遍。
理论上,如果在节点非激活状态下修改mesh,那么至少内部要维护一个变量标记是否在显示的时候需要更新下模型数据
所以现在折中方案我自己绕一下如下解决:
protected onEnable(){
if(this.tempMesh){
this.meshRender.mesh = this.tempMesh;
this.tempMesh = <any>null;
}
}
public setMesh(mesh:Mesh){
if(this.node.active && this.node.parent){
this.meshRender.mesh = mesh;
}else{
this.tempMesh = mesh;
}
}