报个编辑器的Bug

版本:3.5.0以及以下所有版本
操作步骤:
1、新建一个空场景,把以下脚本挂到Camera上。

import { _decorator, Component, Node, Vec3 } from 'cc';

const { ccclass, property, executeInEditMode } = _decorator;

@ccclass('NewComponent')

@executeInEditMode

export class NewComponent extends Component {

    start() {

    }

    update(deltaTime: number) {

        this.node.position = Vec3.ZERO;

    }

}

2、把Camera的Clear Flags改为SKYBOX,这个时间下拉选项一直闪烁,无法修改。

您好,感谢反馈,我们复现了问题,并定位到了原因,上面的代码写法是正确的,会安排修复,会完整支持上述写法并避免出现 change 变动死循环的情况,是否会在 3.5.1 中修复等我们评估下涉及面,谢谢。

如果按照你们的postion是可读的设定,我不建议像this.node.position = Vec3.ZERO这样可以直接赋值,这样真的太不统一了,因为其他地方并不允许直接赋值,都要使用setPosition(),你这样搞真的是非常不统一,糟糕透顶这种设计,你们应该站在用户的角度去设计单一化的api,而不是提供多种方式,某些方式在某些情况下不生效,真的是烦透了

1赞

如果我没理解错上面编辑器组大佬的意思的话,应该是说这种写法不应该导致编辑器异常。所以说应该是编辑器会支持这种写法,但是赋值不会成功,因为 position 依然是只读属性。

如此甚好!

您好,3.5.1 里我们修复了自定义脚本组件有修饰器 executeInEditMode 的情况下,update() 里有设置 this.node.xxx = xxx 情况下,编辑器会陷入该节点变动死循环的问题。
但是比较特殊的情况是你提到的 camera 节点和它的 position 属性变动,由于 positioncamera 来说比较敏感,在场景里还有一个小窗,会触发它的变动识别,陷入循环,这个对 camera 暂时无法自动避免,建议您在 update 里做个条件判断。

好辛苦了,我等3.5.1出来再试试看。
麻烦有时间也看一下,我报的编辑器其它的问题

全局构建插件在被关闭后依然生效

IBuildResult的assetPathInfo.raw