Я совершенно новичок в Swift и SpriteKit, извиняюсь, я действительно ничего не знаю.Я пытаюсь добавить 2 последовательных SKLabelNode в одну сцену.Фон сцены - черный.Я создал функцию, которая генерирует SKShapeNode из UIBezierPath для покрытия, скажем, 3/4 экрана в виде буквы P, .fill = .white.Я добавляю дочерний элемент и завершаю функцию.
Я добавляю функцию в переопределение didMove
.(Не спрашивайте меня, почему, я следую некоторым примерам, и на данный момент это похоже на работу. Я рассмотрю это позже, но в данный момент я сосредоточен на текущей проблеме)
Затем я создаювторая функция для добавления 2 SKLabelNode.Один черный над белой частью и один белый над черной частью.Затем я добавляю оба к сцене.
Я добавляю функцию после фигуры один.
В результате черный цвет над белым участком не отображается.Если я прокомментирую белый цвет поверх черного, предыдущий будет отображаться без проблем.
Я попытался вывести порядок addChild
, но результат не изменился.
Кто-нибудь знаетпричина?
Я пытался переключить addChild
.
import SpriteKit
class MenuScene: SKScene {
override func didMove(to view: SKView) {
layoutScene()
addLabels()
}
func layoutScene() {
backgroundColor = .black
let rectSize = frame.size.width / 4
//Codice per creare la scena della home
//inizio
let homeScreen = SKShapeNode()
homeScreen.fillColor = .white
let shapeHome = UIBezierPath()
let shapeOrigin = CGPoint(x: view!.bounds.minX, y: view!.bounds.minY)
shapeHome.move(to: shapeOrigin)
shapeHome.addLine(to: CGPoint(x: view!.bounds.minX, y: view!.bounds.maxY))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX, y: view!.bounds.maxY))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX, y: rectSize))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX - rectSize, y: rectSize))
shapeHome.addLine(to: CGPoint(x: view!.bounds.maxX - rectSize, y: view!.bounds.minY))
shapeHome.addLine(to: CGPoint(x: view!.bounds.minX, y: view!.bounds.minY))
shapeHome.close()
homeScreen.path = shapeHome.cgPath
homeScreen.fillColor = .white
//fine
addChild(homeScreen)
}
func addLabels() {
let rectSize = frame.size.width / 4
let home = SKLabelNode(text: "HOME")
home.fontName = "AvenirNext-Bold"
home.fontSize = 50.0
home.fontColor = .black
home.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(home)
let b = SKLabelNode(text: "B")
b.fontName = "AvenirNext-Bold"
b.fontSize = 40.0
b.fontColor = .white
b.position = CGPoint(x: frame.maxX - (rectSize/2), y: rectSize/2)
addChild(b)
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
}
}