我怎样才能得到我的SKNodes在不同的文件从gamescene swift
我找不到任何有关SKYodes在单独的文件从gamescene.swift。我试图在一个新的类Swift文件中写这个,但似乎没有工作。我不得不做一个功能,但我不知道如何在我的gamescene中调用它。我怎样才能得到我的SKNodes在不同的文件从gamescene swift
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
我试图让这个在另一个迅速文件,并只使用testlabel在我gamescene。
在此先感谢。
而不是创建一个新文件,你可以考虑在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)))
}
}
好吧有道理我只是想知道,因为如果你有超过10个节点,它会变得混乱 – princearthur791
然后,你可以创建一个函数来创建标签,这将减少重复如果你需要创建很多标签。 –
我再次更新了示例以显示使用扩展将逻辑移动到单独的文件中。 –
你想通过一个单独的文件中的SKNode来实现什么? –
只有清洁文件 – princearthur791
@MarkBrownsword我认为OP在询问如何在Swift中划分'SKNodes',不知道如何:) – ColdSteel