Add uiopacity test case
pr https://github.com/cocos/cocos-engine/pull/16828 doc https://github.com/cocos/3d-tasks/discussions/18155
说明:
UiOpacity测试例:
这个是测试uiopacity组件的效果叠加
U代表是有uiopacity组件的节点
S代表有sprite组件的节点
US代表两者叠加
N代表只有node节点,即没有uiopacity也没有sprite组件
测试项有三行,每行有两排,每一排是三个。三个节点的关系是子节点 第一个节点是根节点,第二个是第一个的子节点,第三个是第二个的子节点
左边第1行第1排: 测试的是uiopacity递归发生影响,uiopacity会递归影响节点,第二个节点和第三个节点效果是一样的。 第一个节点透明度设置的是0.5,所以三个的透明度都是0.5
左边第2行第1排: 测试的是us(uiopacity与sprite)与us(uiopacity与sprite)节点合并发生影响,uiopacity会子节点,子节点会影响孙子节点 第一个节点透明度是0.5,第二个自身是0.5 *第一个节点的影响,是0.25。第三个节点和第二个节点一样也是0.25的透明度
左边第3行第一排: 测试的是根节点只有uiopacity组件对节点的影响: 第一个节点透明度是0.5(不显示),第二个自身是0.5 *第一个节点的影响,是0.25。第三个节点和第二个节点一样
右边第1行第2排: 测试的是根节点只有uiopacity组件,只有uiopacity组件的影响 第一个节点透明度是0.5,第二个自身是0.5。第三个节点和第二个节点一样
右边第2行第2排: 根节点与第二个节点都没有sprite组件的影响 第一个节点透明度是0.5(不显示),第二个自身是0.5 *第一个节点的影响是0.25(但是不会显示)。第三个节点和第二个节点一样的透明度一样,是0.25,会显示
右边第3行第2排:
根节点只有opacity,第二个节点没有uiopacity也没有sprite组件,
第一个节点透明度是0.5(不显示),第二个自身是0.5 (但是不会显示)。第三个节点和第二个节点一样的透明度一样,是0.5,会显示
正确的效果如下图:
测试uiopacity改变parent
中间的图,是从A、B、C、D、E、F、G序号排列,而且B是A的子节点,C是B的子节点,依次类推, A表示:US, B表示:U (所以不会显示,但是会影响后面节点的显示) C表示:US D表示:US E表示:N,没有U,也没有S(所以不会显示,也不会影响后面节点的显示) F表示:US G表示: S
可以移动的节点是D节点,就是红色节点 向前移动:表示红色节点前移 向后移动:表示红色节点后移 复位:表示还原默认位置 独立显示:表示脱离ABCEFG的链表里 使能/禁能:表示D节点的opacity是否生效,U是否有效
计算方式是指,红色节点的opacity的值的计算方式 计算的值是指:各个节点透明度的值 结算结果是指:D节点的透明度的值
只有 UIOpacity 和只是个 Node 节点有什么区别?虽然加在 test case 里,是否也可以做些自动化的测试?比如做了什么操作后,对应 Opacity 值应该是多少,这些在代码里也是可以判断,通过文本输出吧?
只有 UIOpacity 和只是个 Node 节点有什么区别?虽然加在 test case 里,是否也可以做些自动化的测试?比如做了什么操作后,对应 Opacity 值应该是多少,这些在代码里也是可以判断,通过文本输出吧?
Node节点就是一个空的节点,实际上处理uiopacity逻辑的时候,是有三个方向递归的 1、uiopacity组件,就是叠加 2、renderentity,就直接返回 3、就是出了这两者之外的节点,这里就用没有uiopacity和renderentity的组件表示,我这边直接用了一个空的node
可以做成自动化测试的。
只有 UIOpacity 和只是个 Node 节点有什么区别?
我的意思是表现上有什么区别?我看上面的正确图,这二者都是没有显示任何内容。
我的意思是表现上有什么区别?我看上面的正确图,这二者都是没有显示任何内容。
有区别的,只有UiOpacity的话会影响后面节点的opacity值,如果是node的话,会跳过,不会影响第三个节点的值
测试例子不要用中文。