我创建了一个没有纹理但有颜色的SKSPriteNode
let tileNode = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 80.0, height: 120.0))
tileNode.position = CGPointMake(50, 50)
tileNode.name = "rectangle"
addChild(tileNode)
但是该节点未显示在屏幕上。
但是,我可以通过触摸碰撞检测到它
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
let location: CGPoint = (touches.anyObject() as UITouch).locationInNode(tilesLayer)
let rect: SKSpriteNode = tilesLayer.childNodeWithName("rectangle") as SKSpriteNode
if rect.containsPoint(location) {
println("TOUCHED") //It works
}
}
编辑:仅当有背景SKSpriteNode纹理时,才会隐藏SKSpriteNode颜色。完整代码:https://gist.github.com/BabyAzerty/9dca752d9faa7b768bf0
最佳答案
我相信您是使用Xcode中的Game项目模板创建的项目的,对吗?您的问题是GameViewController.m中的这一行(大约41行)。
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = YES;
如果将其设置为“否”,则它将按预期呈现。我从空项目中构建游戏项目,因此从未设置该属性。只需在您的代码中搜索
ignoresSiblingOrder
当然,如果您要进行渲染优化,则可以始终使用zPosition。
关于ios - 带颜色的SKSpriteNode不显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27230180/