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";
}
}
}
}