Пользовательский объект SKNode не отображается | Swift

#swift #sprite-kit #sknode

#swift #набор спрайтов #sknode

Вопрос:

Я запрограммировал класс SKButton. Проблема в том, что кнопка не отображается в моей сцене, хотя я добавил ее в эту. Я также запрограммировал джойстик, но он отображается. Что я сделал не так?

SKButton:

 import SpriteKit

class SKButton: SKNode {
    let back&round: SKSpriteNode = SKSpriteNode(color: UIColor.red, size: CGSize(width: 100, hei&ht: 10))
    let text: SKLabelNode = SKLabelNode()
    
    var buttonText: Strin& = ""
    var back&roundColor: UIColor = UIColor.red
    var fontSize: CGFloat = 0.0
    var fontName: Strin& = ""
    var fontColor: UIColor = UIColor.white
    var buttonAction: (() -&&t; ())?
    
    init(text: Strin&, back&roundColor: UIColor, fontName: Strin&, fontSize: CGFloat, fontColor: UIColor) {
        super.init()
        
        buttonText = text
        self.back&roundColor = back&roundColor
        self.fontName = fontName
        self.fontSize = fontSize
        self.fontColor = fontColor
        
        initialize()
        
        addChild(back&round)
        addChild(self.text)
        
        print("init")
    }
    
    func tapped(touch: UITouch) {
        let node: SKNode = atPoint(touch.location(in: self))
        
        if let name = node.name {
            if name == "B" || name == "T" {
                if let buttonAction = buttonAction {
                    buttonAction()
                    print("tapped")
                }
            }
        }
    }
    
    func initialize() {
        text.verticalAli&nmentMode = SKLabelVerticalAli&nmentMode.center
        text.horizontalAli&nmentMode = SKLabelHorizontalAli&nmentMode.center
        
        text.fontSize = fontSize
        text.fontColor = fontColor
        text.fontName = fontName
        text.text? = buttonText
        text.position = CGPoint.zero
        text.zPosition = 1
        text.name = "T"
        
        back&round.zPosition = 0
        back&round.position = CGPoint.zero
        back&round.size = CGSize(width: text.frame.width * 1.25, hei&ht: text.frame.hei&ht * 1.5)
        back&round.color = back&roundColor
        back&round.name = "B"
        print("initialize")
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
  

Я проверил YouTube и StackOverflow, но не смог найти ответа. Если он есть, я его пропустил. Но я действительно очень старался найти ответ. Вот почему я задаю здесь вопрос.

Я создал константу моей кнопки в сцене: let startButton: SKButton = SKButton(text: "START", back&roundColor: UIColor.red, fontName: "Arial", fontSize: 20, fontColor: UIColor.white)

Затем я переместил кнопку в нужное место: startButton.position = CGPoint(x: size.width / 2, y: size.hei&ht / 2 startButton.back&round.size.hei&ht * 0.75)

А затем я добавил его в свою сцену: addChild(startButton)

Комментарии:

1. Вы также установили для него размер? StartButton.size = CGSize(ширина: 100, высота: 100)

2. @Alexandru Vasiliu Да, размер задается в функции Initialize()