我正在尝试使用自定义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))
}
答案 0 :(得分:0)
延迟可能是由于sprite.fillShader = SKShader(fileNamed: "inkBlobShader.fsh")
导致着色器被编译。尝试在场景加载时编译着色器并保持引用,而不要等到用户与场景进行交互以加载和编译着色器。