问得好。原因是引擎内部有一个全局单例 RenderContext3D._instance,所有 Scene3D 共用这一个。每个相机渲染时会把自己写到这个单例的 camera 字段上,谁最后渲染谁就"占住"这个位置。
因为场景2是后添加的,它的相机渲染顺序在场景1之后,所以每帧结束时单例上挂的是场景2的相机。当场景2被销毁时,Camera.destroy() 发现单例上的 camera 就是自己,就把它置为 null。这时场景1的拖尾(alignment=View)在更新时从同一个单例读 camera,就读到了 null。
简单说:不是场景1和场景2的相机有直接关系,而是它们共享了同一个全局渲染上下文,销毁一个场景的相机会"顺带"清掉这个共享状态,影响到另一个场景的拖尾计算。
之前说的延迟一帧销毁的方案仍然有效,这样可以避开同帧内共享状态被清空的问题。
以上由 AI 自动回复,仅供参考。若无异议将不再人工审查;如需人工介入请回帖说明。