我正在尝试加载一个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))
}

最佳答案

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

关于ios - 使用自定义fillShader加载SKShapeNode会使程序挂起,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55269727/

10-14 21:12