Loading

layaair 材质动画报错问题

编译器版本: 2.7.1
引擎源码版本: 2.7.3
unity3d 插件版本: 2.7.1

操作: 使用 LayaAir/Mesh/UnlitMaterial, 录制材质 透明, uv 动画在播放的时候报错.

问题: 在Unity里面录制了材质的透明动画,但是预览的时候报错, 放在工程里面也是报错的.

出现的原因: 在运行动画文件的时候,引擎找到了 meshRender.material._Color 属性 但是没有这个属性, 这个属性消失了, 但是在2.8.0(beta)版本里面就有这个属性.

解决思路: 找到节点的 Animator 组件 找到里面的的寻找属性的路径 将_Color的值修改为 albedoColor

解决方案:

let animator = this.owner.getComponent(Laya.Animator);
let d = animator._keyframeNodeOwners;
for(let key in d) {
      let item = d[key];
      // 修改 颜色 报错
      if(item.fullPath.search("material._Color") != -1) {
            item.fullPath = item.fullPath.replace("_Color", "albedoColor");
            for(let i = 0; i < item.property.length; i++) { 
                  if(item.property[i] == "_Color") {
                        item.property[i] = "albedoColor";
                  }
            }
      // _MainTex_ST
      // 修改 uv动画
      } else if(item.fullPath.search("material._MainTex_ST") != -1) {
            item.fullPath = item.fullPath.replace("_MainTex_ST", "tilingOffset");
            for(let i = 0; i < item.property.length; i++) { 
                  if(item.property[i] == "_MainTex_ST") {
                        item.property[i] = "tilingOffset";
                  }
            }
      }
}

posted @ 2020-09-11 16:57  丫丫魏  阅读(304)  评论(0编辑  收藏  举报