Sprite kit 为什么场景的布局在所有设备中都不相同
**嗨 我想做一个砖块射击游戏,我开始做靠近屏幕边缘的边界线,我实现了代码(如下),它在所有设备上都应该是一样的,但当我在iPhone8上尝试时,一切都很好,当我在iPad或iPhonex上尝试时,它看起来不同,好像出于某种原因放大了 即使是标准的hello world标签也是一样的 你能帮帮我吗 谢谢**Sprite kit 为什么场景的布局在所有设备中都不相同,sprite-kit,Sprite Kit,**嗨 我想做一个砖块射击游戏,我开始做靠近屏幕边缘的边界线,我实现了代码(如下),它在所有设备上都应该是一样的,但当我在iPhone8上尝试时,一切都很好,当我在iPad或iPhonex上尝试时,它看起来不同,好像出于某种原因放大了 即使是标准的hello world标签也是一样的 你能帮帮我吗 谢谢** func crwalls(){ // for i in 1...3 { let spce = self.frame.width/12 let w
func crwalls(){
// for i in 1...3 {
let spce = self.frame.width/12
let wall = SKSpriteNode(imageNamed: "liiine")
wall.size = CGSize(width: 20, height: self.frame.height/1.5)
wall.position = CGPoint(x: frame.minX + 30, y: frame.midY + (self.size.width/4) )
wall.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: ((wall.size.width)), height: ((wall.size.height))))
//floor.physicsBody?.categoryBitMask = floorbit
wall.physicsBody?.isDynamic = false
print("mmm")
self.addChild(wall)
let wall3 = SKSpriteNode(imageNamed: "liiine")
wall3.size = CGSize(width: 20, height: self.frame.height/1.5)
wall3.position = CGPoint(x: frame.maxX - 30, y: frame.midY + (self.size.width/4) )
wall3.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: ((wall3.size.width)), height: ((wall3.size.height))))
//floor.physicsBody?.categoryBitMask = floorbit
wall3.physicsBody?.isDynamic = false
print("mmm")
self.addChild(wall3)
let wall4 = SKSpriteNode(imageNamed: "liiine")
wall4.size = CGSize(width: self.frame.width - 40, height: 20)
wall4.position = CGPoint(x: self.frame.midX, y: self.frame.maxY - spce)
wall4.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: ((wall4.size.width)), height: ((wall4.size.height))))
//floor.physicsBody?.categoryBitMask = floorbit
wall4.physicsBody?.isDynamic = false
print("mmm")
self.addChild(wall4)
}
‘’’
是的,我同意,令人恼火的是,Xcode没有一个“全能选项”来完美地为所有不同的设备屏幕尺寸扩展所有内容 不过,您可能需要仔细研究一下,看看这些方法是否能给您带来更好的结果: 因此,您可以选择缩放模式的几个不同选项。与链接文档中列出的内容一起玩一玩。只需将GameViewController中突出显示的部分更改为您喜欢的部分
class GameViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if let view = self.view as! SKView? {
if let scene = SKScene(fileNamed: "MainScene") {
scene.scaleMode = .**aspectFill**
view.presentScene(scene)
}
view.ignoresSiblingOrder = true
view.showsFPS = true
view.showsNodeCount = true
}
}
override var shouldAutorotate: Bool {
return true
}
override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
if UIDevice.current.userInterfaceIdiom == .phone {
return .allButUpsideDown
} else {
return .all
}
}
override var prefersStatusBarHidden: Bool {
return true
}
}
简单回答“为什么场景的布局在所有设备中都不相同。”
因为那是不可能的。这就像在问为什么服装店不能只卖1号的衣服
屏幕有各种形状和大小,因此由您决定它对用户的显示方式
最简单的解决方案是使用正方形场景构建游戏。这将涵盖所有方面,包括高和宽
当然,这对实际的游戏来说可能并不理想,因为你可能会失去更多你想要的场景
另一个解决方案是使SKView成为场景的倒数比率,并在视图上使用.aspectFill。这将使您的侧边在更宽的设备上显示更多信息,但您的高设备将接收到您希望他们看到的信息量。thx为您提供帮助,我尝试过。aspectfit在所有设备上都工作得很好,但在某些设备上显示了黑色空间。有什么办法克服这一问题吗?aspectFill是您的“全部操作选项”,可以完美地缩放所有不同的设备屏幕尺寸。@Heyguys,如果您支持所有设备,那么您需要将场景构建为正方形。如果你只是为高个子设备建造场景,那么你需要以812/375的比例建造场景(感谢苹果)。