Apple Silicon双显示器多桌面SpriteKit窗口动画冻结问题
SpriteKit多窗口跨桌面动画停止问题(Apple Silicon平台)
使用搭载Apple M2 Pro芯片的2023款Mac mini并连接两台显示器时,会出现以下异常:当SpriteKit应用的两个窗口处于不同桌面时,其中一个窗口的动画无法正常运行。
问题复现步骤
- 在Xcode中创建新的macOS项目
- 选择基于SpriteKit技术栈的示例Game项目
- 编辑
GameScene.swift中的淡入淡出时长参数,让动画节点的持续时间延长(例如设置为15秒) - 在
AppDelegate.applicationDidFinishLaunching方法中添加以下代码,实例化第二个窗口:let mainStoryboard = NSStoryboard.init(name: NSStoryboard.Name("Main"), bundle: nil) if let newWindow = mainStoryboard.instantiateInitialController() as? NSWindowController { newWindow.showWindow(self) } - 运行应用:
- 若两个窗口处于同一桌面,动画可正常运行
- 若两个窗口分属不同桌面,其中一个桌面的窗口动画会停止,尽管SKView显示的帧率数值正常
补充信息
- 仅为Intel处理器编译、通过Rosetta在Apple Silicon设备上运行时,该问题不会出现
- 此问题在macOS 13和macOS 14系统中均存在,已通过Feedback Assistant提交报告,现寻求可行的解决办法
内容的提问来源于stack exchange,提问作者sv_lane
相关产品推荐
相关产品推荐

