使用自定义fillShader加载SKShapeNode会使程序挂起

时间:2019-03-20 20:34:03

标签: ios swift macos sprite-kit

我正在尝试使用自定义fillShader加载SKShapeNode,当单击鼠标时,该fillShader开始动画。当我这样做时,该程序开始挂起大约一秒钟左右。为什么是这样?这段代码有什么问题吗?

制作着色器的位置:

func shaderSprite(position: CGPoint) -> SKShapeNode {
        let sprite = SKShapeNode(rectOf: CGSize(width: 1000, height: 1000))
        sprite.fillColor = .red
        sprite.strokeColor = .clear
        sprite.position = position
        sprite.zPosition = -1
        sprite.fillShader = SKShader(fileNamed: "inkBlobShader.fsh")
        sprite.position = position
        return sprite
}

添加节点:

func touchDown(atPoint pos : CGPoint) {
    //add the sprite to the scene. (THIS IS WHERE THINGS START LAGGING)
    self.addChild(self.shaderSprite(position: pos))
}

1 个答案:

答案 0 :(得分:0)

延迟可能是由于sprite.fillShader = SKShader(fileNamed: "inkBlobShader.fsh")导致着色器被编译。尝试在场景加载时编译着色器并保持引用,而不要等到用户与场景进行交互以加载和编译着色器。