[开发者心得] 使用Vector为什么要Clone?什么情况下使用position要clone

[复制链接]
1102 |0
龍且 发表于 2024-1-4 13:51:15 | 显示全部楼层 |阅读模式
本帖最后由 复读机读复读机 于 2024-1-9 11:26 编辑

1.因为Vector是一个对象,不clone直接调用add、subtract、multiply、divide这些算术方法时会改变自身的值

2.一般自己定义的Vector对象,自己不希望它改变且能参与到算术计算时需要clone先

举以下例子:如果pos在add前不clone,它自己本身将会变成在原有基础上z轴高200个单位

console.log("11111111: " + JSON.stringify(this.cube.worldTransform.position));
            let pos = this.cube.worldTransform.position;
            pos.add(new Vector(0, 0, 200));
            this.cube.worldTransform.position = pos;
            console.log("22222222: " + JSON.stringify(pos));


image.png


如果pos克隆一下再add,它的z轴将没有变化

pos.clone().add(new Vector(0, 0, 200));


image.png

回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表