diff --git a/packages/loader/src/prefab/PrefabResource.ts b/packages/loader/src/prefab/PrefabResource.ts index bd5da0448b..2a49228793 100644 --- a/packages/loader/src/prefab/PrefabResource.ts +++ b/packages/loader/src/prefab/PrefabResource.ts @@ -33,16 +33,23 @@ export class PrefabResource extends ReferResource { */ _addDependenceAsset(resource: ReferResource) { this._dependenceAssets.add(resource); - // @ts-ignore - resource._associationSuperResource(this); + // @todo: The PhysicsMaterial does not inherit from ReferResource. Currently, + // ReferResource requires the engine to be passed as a parameter, which prevents cross-engine reuse. + // A refactor of ReferResource will be needed in the future. + if (resource instanceof ReferResource) { + // @ts-ignore + resource._associationSuperResource(this); + } } protected override _onDestroy(): void { super._onDestroy(); this._root.destroy(); this._dependenceAssets.forEach((asset) => { - // @ts-ignore - asset._disassociationSuperResource(this); + if (asset instanceof ReferResource) { + // @ts-ignore + asset._disassociationSuperResource(this); + } }); } }