动态添加UITransform组件问题

  • Creator 版本: 3.4.0 (3.x版本应该都有)

  • 目标平台: chrome

  • 重现方式:动态添加UITransform组件,后续无法获取该组件

动态创建一个node,并添加一个UITransform组件,后续无法获取的问题,代码如下

        // 动态创建一个node
        let node = new Node();
        node.layer = Layers.Enum.UI_2D;
        node.addComponent(Canvas);

        // 添加一个UITransform组件
        const uiTransform = node.addComponent(UITransform);
        uiTransform.contentSize = view.getVisibleSize();
        console.log('size', uiTransform.contentSize);
        
       // 获取UITransform,此时两个transform不是同一个
        let test = node.getComponent(UITransform);
        console.log('size1', uiTransform == test, test.contentSize);

期望,test和uiTransfrom应该是同一个,但实际上不是,请问下,是设计如此还是存在问题?

1赞

是因为node和rootNode不是同一个吧。。。

项目文件,所以截取的时候,我是手写的,下面的贴错了

@jare

知道原因了,当添加Canvas的时候,默认会添加一个UITransform组件

因为 Canvas 依赖 UITransform 导致的,所以添加了 Canvas 的话就会自动添加 UITransform 了。。。

好的,明白了。另外,一个node是不是应该只能有一个UITransform啊

目前确实没有这个限制,理论上这个限制不是必须的,我们会考虑加上,但是运行时大概率也不会有这个判断,影响性能。

建议可以在预览的时候给个警告

1赞

的确,是个新坑,遇到过。添加了一个设置了尺寸,然后再获取,用来做个坐标转换,结果完全和期待不一样,然后检查到,两个transform :joy:

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。