我正在尝试使用SpriteKit为IOS创建游戏。我的问题是不同的设备输出不同的东西。这是我尝试的代码:
var testPath = CGRect(
x: 0,
y: 0,
width: UIScreen.main.bounds.width * 2,
height: UIScreen.main.bounds.height * 2
)
var testFill = SKShapeNode(path: CGPath(rect: testPath, transform: nil))
testFill.fillColor = UIColor.black
addChild(testFill)
对于iPhone 7,这非常有效。对于iPhone 5,我在顶部和右侧获得了额外的空间,与Ipads相同。但是,对于iPhone 7+,我会离开屏幕。
我的第一个问题是,为什么我需要main.bounds.height * 2
垂直覆盖屏幕。 * 1
不应该足够吗?其次,更重要的是,为什么我会在不同的设备上得到如此不同的结果?
答案 0 :(得分:1)
如果你朝这个方向努力,你将面临许多问题!
您不应使用屏幕大小,而应使用视图控制器的视图范围。 这样做可以避免尺寸问题,如果你的应用程序可以在多任务中使用,或者...... [/ p>
override func viewDidLoad() {
super.viewDidLoad()
let skView = SKView(frame: self.view.bounds)
view.addSubview(skView);
let scene = MyScene(size: view.bounds.size) // <- construct your scene with the screen size
skView.presentScene(scene)
}
然后,您可以填充场景并使用大小值来布局节点。
答案 1 :(得分:0)
1-根据游戏逻辑游戏空间应该有比屏幕更大的尺寸,所以精灵来自不同的位置,如果你将其设置为仅* 1(将填满整个屏幕包括statusBar),添加的精灵将显示在屏幕而不是从左到右/从下到上反弹
2-每个设备都有自己不同的屏幕尺寸,因此它的尺寸* 2也会不同
答案 2 :(得分:0)
也许您应该检查您的 info.plst 以查看有关启动屏幕的行:https://stackoverflow.com/a/62749138/13433324