- Creator 版本: 3.8.8
当父级A设置了透明度比如128后, 会影响子级B的透明度,但是此时子级B的color上仍然保持255,表现却变成了半透明,当子级B移出父级A后,这种透明度影响仍然在,但Color仍然是255,然后就乱套了,本质上这是个bug吧?
当父级A设置了透明度比如128后, 会影响子级B的透明度,但是此时子级B的color上仍然保持255,表现却变成了半透明,当子级B移出父级A后,这种透明度影响仍然在,但Color仍然是255,然后就乱套了,本质上这是个bug吧?
前面的叫透明度叠加。后面的具体怎么移的?如果真存在就是bug。可以自己写个shader修改透明度。
移出去,透明度影响不存在啊
这个是因为修改父节点的透明度,子节点也会同步修改的,我记得代码可以设置是否影响子节点的透明度,这个你就想象成设置缩放大小

首先两个Sprite节点之间要插入一个普通的节点
然后要延迟更换父级,要等颜色属性在节点以及子级生效
import { _decorator, Color, Component, Material, Node, Sorting, Sorting2D, Sprite, Vec4 } from 'cc';
const { ccclass, property, type, executeInEditMode } = _decorator;
@ccclass('SpriteAlphaTest')
export class SpriteAlphaTest extends Component {
private sprite: Sprite
private child: Node;
private childSkin: Sprite;
protected onLoad() {
this.sprite = this.getComponent(Sprite);
this.child = this.node.getChildByName("Child");
this.childSkin = this.child.getChildByName("Skin").getComponent(Sprite);
}
protected start(): void {
this.sprite.color = new Color(255, 255, 255, 128);
this.scheduleOnce(() => {
this.node.parent.addChild(this.child);
console.log(this.childSkin.getComponent(Sprite).color);
}, 2);
}
}
我试过了,这个Bug藏的有点深
确实有这个问题