我试图在屏幕上显示一些节点。
在我的GameViewController中,我有:
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
// Load the SKScene from 'GameScene.sks'
// Alternative -> let scene = GameScene(size: view.frame.size)
if let scene = SKScene(fileNamed: "AntarcticaScene") {
// Set the scale mode to scale to fit the window
scene.scaleMode = .aspectFill
// Present the scene
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
}
}
}
在我的名为AntarcticaScene.swift的文件中,我有:
class AntarcticaScene: SKScene {
var box: SKSpriteNode!
override func didMove(to view: SKView) {
// Initialize entities
box = SKSpriteNode(color: UIColor.cyan, size: CGSize(width: 40, height: 60))
print("Game scene loading")
// Add entities
addChild(box)
// Set positions
box.position.x = size.width / 2
box.position.y = size.height / 2
}
}
我还有一个AntarcticaScene.sks
文件,自定义类设置为AntarcticaScene
。此sks文件在屏幕中央有一个红色方块。
现在,当我运行应用程序时,我可以看到sks文件中的红色方块,但我不明白为什么蓝色框不会出现在屏幕上,即使我的打印声明是被执行。
答案 0 :(得分:0)
2件事......
在所有对象上设置zPosition
box = SKSpriteNode(color: UIColor.cyan, size: CGSize(width: 40, height: 60))
box.zPosition = 1
addChild(box)
场景的默认anchorPoint是0,0(这是屏幕的中心),除非更改意味着通过你的定位你将盒子添加到右上角并且盒子的3/4将会出来观点。
尝试将框设置为视图中的某个位置,以确保其显示
box.position = CGPoint(x: 100, y: 100)
答案 1 :(得分:-1)
尝试使用self.size.width
代替size.width
。