В Swift и SpriteKit вы можете назначить объект как "isUserInteractionEnabled = false". Это сбивает с толку, это не означает, что объект будет игнорировать касания и позволять этим касаниям проходить через узлы под ним.
При создании приложений SpriteKit я очень часто создаю узел (например, SKShapeNode или SKSpriteNode), а затем добавляю метку. Я хочу, чтобы метка игнорировала прикосновения и позволяла этим прикосновениям проходить к узлу позади него, но я не понимаю, как это делается, если «isUserInteractionEnable» не является билетом.
Есть предложения? Вот образец этикетки, который получает прикосновения, но не должен:
class MenuButton: SKShapeNode {
/* The MenuBar will have as children nine buttons of two types. Dialog Springers and SubMenu Droppers */
// MARK: - Class Variables
var title = "Button"
var menu = SKShapeNode()
let buttonLabel = SKLabelNode(fontNamed: devFont4)
init(title: String)
{
super.init()
isUserInteractionEnabled = true
self.title = title
self.name = "\(title) Menu Button"
let btnLen = title.count * 10 + 16
let menuSize = CGSize(width: btnLen, height: 32)
menu = SKShapeNode(rectOf: menuSize)
addChild(menu)
menu.fillColor = .clear
menu.strokeColor = .clear
menu.lineWidth = 0
menu.zPosition = 501
// Add Label
let letterHeight: CGFloat = 22
buttonLabel.text = title
buttonLabel.name = "\(title) Label"
buttonLabel.fontSize = letterHeight
buttonLabel.fontColor = .black
buttonLabel.zPosition = 502
buttonLabel.position = CGPoint(x: 0, y: Int(-letterHeight/2) + 2)
buttonLabel.isUserInteractionEnabled = false
addChild(buttonLabel)
}
}