【问题标题】:SpriteKit view shows random noise after El Capitan updateSpriteKit 视图显示 El Capitan 更新后的随机噪声
【发布时间】:2015-10-25 18:31:50
【问题描述】:

刚刚更新到 El Capitan,发现我的 SKView 显示如下:

为了隔离问题,我尝试像这样实例化一个干净的新 SKView 和 SKScene

 let redBox:SKSpriteNode = SKSpriteNode(color: SKColor.redColor(), size:CGSizeMake(300, 300))
        redBox.position = CGPointMake(512, 384)
        redBox.runAction(SKAction.repeatActionForever(SKAction.rotateByAngle(6, duration: 2)))
        testScene.addChild(redBox)
let newSKView = SKView(frame: self.view.bounds)
self.view.addSubview(newSKView)

let testScene = SKScene(size: self.view.bounds.size)
newSKView.presentScene(testScene)

let redBox:SKSpriteNode = SKSpriteNode(color: SKColor.redColor(), size:CGSizeMake(300, 300))
redBox.position = CGPointMake(512, 384)
redBox.runAction(SKAction.repeatActionForever(SKAction.rotateByAngle(6, duration: 2)))
testScene.addChild(redBox)

也呈现为噪点。然后我尝试在新项目的 ViewController.viewDidLoad 中运行完全相同的代码,效果很好。

所以它一定是我在代码库的其他地方做的事情,但我不知道去哪里找。所有代码都是here

更新:这似乎发生在任何可见的 SKView 上,无论场景如何。

【问题讨论】:

  • 如果噪声不是动画的,它可能是来自 GPU 内存的旧数据,但我不知道为什么它不会消失......我今天晚些时候会在我的 El 上测试船长安装。
  • 它不是动画的,你说得对,我见过扭曲的文字,甚至还有关闭的鬼魂,最小化,最大化那里的红绿灯,所以它是旧的 GPU 数据
  • 我刚刚使用 Swift 2 在 Xcode 7 中创建了一个新项目,使用默认示例,我没有任何问题。我没有看到视图控制器让我将您的代码放入其中,看来 AppDelegate.swift 文件处理场景的创建。
  • 是的,这里也一样,新项目有效。在项目中,ViewController 负责创建场景。 LoaderScene 是 SKScene 的子类。但主要问题似乎出在这个特定项目中的 /any/ SKView 上。这让人很奇怪。添加 SKView 会产生这种噪音。 github.com/mortenjust/droptogif/blob/master/droptogif/…
  • 我的主要想法是它在 AppDelegate 中。使用applicationWillBecomeActive,您可以检查vc 是否不是nil。可能是这些行有点混乱(我还不知道,我只看了 30 分钟的代码),并且不按顺序调用。你还能在有问题的窗口上调出首选项抽屉吗?该项目目前告诉我,我的配置文件搞砸了,我可能会努力修复这些(我刚刚经历了很多工作让他们在我的项目上工作,这需要一段时间 :) 以便我可以运行它.

标签: xcode cocoa sprite-kit osx-elcapitan


【解决方案1】:

我们最近在办公室发生了这种情况。我认为这可能与硬件/驱动程序问题有关。它发生在某些 Mac 上,但在使用相同 Xcode 版本和相同源代码时不会发生。 SKView 在我的配备 NVIDIA GeForce GT 650M 1024 MB 的 MacBook Pro(Retina,15 英寸,2013 年初)上显示了糟糕的数据,但在我们拥有的其他一些 MBP 上却没有。当我将应用程序拖到不同的监视器上时,它会抓取不同的不良数据。

我找到了解决我们情况的方法,请确保将 SKView 设置为 WantLayer,例如:

skView?.wantsLayer = true

这也可以在Interface Builder中通过勾选“Want's Core Animation Layer”来设置。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-03-11
  • 2016-01-16
  • 2015-12-28
  • 2016-01-06
  • 2020-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多