Fixed the problem of image clone (#2603)

* fix: 2d clone
This commit is contained in:
AZhan
2025-04-10 14:25:09 +08:00
committed by GitHub
parent 3441a7690a
commit fa6d0e1eb6
6 changed files with 85 additions and 9 deletions

View File

@@ -32,7 +32,7 @@ export class SpriteRenderer extends Renderer implements ISpriteRenderer {
@ignoreClone
private _drawMode: SpriteDrawMode;
@assignmentClone
@ignoreClone
private _assembler: ISpriteAssembler;
@assignmentClone
private _tileMode: SpriteTileMode = SpriteTileMode.Continuous;
@@ -287,7 +287,6 @@ export class SpriteRenderer extends Renderer implements ISpriteRenderer {
*/
override _cloneTo(target: SpriteRenderer, srcRoot: Entity, targetRoot: Entity): void {
super._cloneTo(target, srcRoot, targetRoot);
target._assembler.resetData(target);
target.sprite = this._sprite;
target.drawMode = this._drawMode;
}

View File

@@ -13,6 +13,7 @@ import {
Ray,
Vector2,
Vector3,
assignmentClone,
deepClone,
dependentComponents,
ignoreClone
@@ -77,19 +78,19 @@ export class UICanvas extends Component implements IElement {
@ignoreClone
private _renderMode = CanvasRenderMode.WorldSpace;
@ignoreClone
@assignmentClone
private _renderCamera: Camera;
@ignoreClone
private _cameraObserver: Camera;
@ignoreClone
@assignmentClone
private _resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation;
@ignoreClone
@assignmentClone
private _sortOrder: number = 0;
@ignoreClone
@assignmentClone
private _distance: number = 10;
@deepClone
private _referenceResolution: Vector2 = new Vector2(800, 600);
@deepClone
@assignmentClone
private _referenceResolutionPerUnit: number = 100;
@ignoreClone
private _hierarchyVersion: number = -1;
@@ -381,6 +382,13 @@ export class UICanvas extends Component implements IElement {
}
}
/**
* @internal
*/
_cloneTo(target: UICanvas, srcRoot: Entity, targetRoot: Entity): void {
target.renderMode = this._renderMode;
}
private _getRenderers(): UIRenderer[] {
const { _orderedRenderers: renderers, entity } = this;
const uiHierarchyVersion = entity._uiHierarchyVersion;

View File

@@ -29,7 +29,7 @@ export class Image extends UIRenderer implements ISpriteRenderer {
private _sprite: Sprite = null;
@ignoreClone
private _drawMode: SpriteDrawMode;
@assignmentClone
@ignoreClone
private _assembler: ISpriteAssembler;
@assignmentClone
private _tileMode: SpriteTileMode = SpriteTileMode.Continuous;
@@ -149,6 +149,16 @@ export class Image extends UIRenderer implements ISpriteRenderer {
}
}
/**
* @internal
*/
_cloneTo(target: Image, srcRoot: Entity, targetRoot: Entity): void {
// @ts-ignore
super._cloneTo(target, srcRoot, targetRoot);
target.sprite = this._sprite;
target.drawMode = this._drawMode;
}
protected override _updateBounds(worldBounds: BoundingBox): void {
const sprite = this._sprite;
const rootCanvas = this._getRootCanvas();