而不是創建一個新文件,你可以考慮在GameScene.swift文件中爲你的標籤創建一個屬性。這可讓您通過呼叫self.testLabel
將標籤添加到現場。
class GameScene: SKScene {
lazy var testLabel: SKLabelNode! = {
let testLabel = SKLabelNode(fontNamed: "AppleSDGothicNeo-Medium")
testLabel.text = "TEST"
testLabel.position = CGPoint(x: self.frame.midX, y: 300)
testLabel.fontSize = 90
testLabel.color = SKColor.blue
testLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center
return testLabel
}()
override func didMove(to view: SKView) {
self.addChild(self.testLabel)
}
}
它並沒有真正意義上創建一個新的文件,除非你想創建一個自定義SKLabelNode
一些擴展功能。
另一種方法是創建一個從輸入參數創建標籤的函數。
class GameScene: SKScene {
func makeTestLabel(text: String, position: CGPoint) -> SKLabelNode {
let testLabel = SKLabelNode(fontNamed: "AppleSDGothicNeo-Medium")
testLabel.text = text
testLabel.position = position
testLabel.fontSize = 90
testLabel.color = SKColor.blue
testLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center
return testLabel
}
override func didMove(to view: SKView) {
self.addChild(self.makeTestLabel(text: "Test1", position: CGPoint(x: self.frame.midX, y: 300)))
self.addChild(self.makeTestLabel(text: "Test2", position: CGPoint(x: self.frame.midX, y: 400)))
}
}
另一種選擇,如果你想分享這個場景之間將創建SKScene
的延伸和移動makeTestLabel
功能。它如何使用保持不變。這爲在場景之間重複使用邏輯提供了靈活性,並可以回答您的原始問題
// SKScene+Extensions.swift
import SpriteKit
extension SKScene {
func makeTestLabel(text: String, position: CGPoint) -> SKLabelNode {
let testLabel = SKLabelNode(fontNamed: "AppleSDGothicNeo-Medium")
testLabel.text = text
testLabel.position = position
testLabel.fontSize = 90
testLabel.color = SKColor.blue
testLabel.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.center
return testLabel
}
}
// GameScene.swift
class GameScene: SKScene {
override func didMove(to view: SKView) {
self.addChild(self.makeTestLabel(text: "Test1", position: CGPoint(x: self.frame.midX, y: 300)))
self.addChild(self.makeTestLabel(text: "Test2", position: CGPoint(x: self.frame.midX, y: 400)))
}
}
你想通過一個單獨的文件中的SKNode來實現什麼? –
只有清潔文件 – princearthur791
@MarkBrownsword我認爲OP在詢問如何在Swift中劃分'SKNodes',不知道如何:) – ColdSteel