通过AnimatorState为Animator添加多个播放状态islooping属性会被覆盖

美术导出的动画Animator动作时组合在一起的 通过官方文档通过
Animator.addState为其添加播放状态,每个状态记录的开始时间结束时间,是否循环。但只要添加多组动作,如
Animator.addState(move);
Animator.addState(jump);
那么只要jump的islooping为true那么在播放move的时候也会变成循环哪怕当初设置的是false,反之也一样。
反正就是最要添加多组播放状态,那么不管播放里面的那个状态是否循环播放都是取决于你最后添加的那个状态的islooping来确定。
如果本来就是这样设计的 那么是不是只有每次需要播放某个动作时再为其添加状态播放 而不是初始化时就可以把所有状态添加进去
我的附件没东西,我不确定这是不是BUG,只是确定是不是本身设计如此
 
已邀请:

Laya_Aaron

赞同来自:

引擎不能按state 设置looping  只能按clip ,每次都获取相同的clip 就把之前设置的给冲掉了

匿名用户

赞同来自:

 
/**获取动画 */
public getAni(): void {
this.ani = this.owner.sprite3d.getComponent(Laya.Animator);
let all = 486;
let arr = ["3,21,run,true", "29,59,wolk,true", "70,120,cheer,true", "125,380,dance,true", "393,440,forerake,false", "443,485,backward,true"];
let state: Laya.AnimatorState;
console.log("getANi");
for (let i = 0; i < arr.length; i++) {
let arrString = arr[i].split(",");
// 创建动画动作状态
state = new Laya.AnimatorState();
//设置动作状态的名称
state.name = arrString[2];
// 开始时间
state.clipStart = parseInt(arrString[0]) / all;
// 结束时间
state.clipEnd = parseInt(arrString[1]) / all;
//得到默认动画赋值给Clip(getDefaultState默认动画为Unity中animation的数组顺序0下标的动画)
state.clip = this.ani.getDefaultState().clip;
//动画播放是否循环
state.clip.islooping = false;
// state.addScript(Laya.AnimatorStateScript);
if (arrString[3] == "true") state.clip.islooping = true;
this.ani.addState(state);
// this.ani.play(arrString[2]);
}

/**播放动画 */
public playAni(aniName: PERSON_ANI, islooping: boolean = true): void {
console.log("播放:" + aniName);
this.ani.getControllerLayer().getAnimatorState(aniName).clip.islooping = islooping;
this.ani.play(aniName);
}
////迷茫,这这样写,就是有一个 不循环,所有的都不循环了…… 求解答鸭

要回复问题请先

商务合作
商务合作