iPhone游戏的SpriteKit级编辑器场景大小?

时间:2015-12-17 18:18:28

标签: ios sprite-kit

之前已经问过这个问题,但我从来没有找到我想要的答案。

故事是这样的:我想制作一款通用游戏,我将关卡编辑器中的场景大小设置为最大尺寸,2048x1536。

一切都很顺利,直到我实施了iAd,它开始让我对场景产生问题,以及它调整自身以适应所有设备的方式。当我在一个宽度不是2048像素的设备上打开广告时,广告会拉伸场景和其他奇怪的行为。

所以现在我想制作一个iPhone版本和我的游戏的iPad版本,我的问题是:我在关卡编辑器中设置了哪个尺寸?我将它设置为最大的设备之一吗?还是最小的? 如何在场景中定位精灵?

如果它有用,我的不是基于平铺的游戏,我没有一个“世界”。或者相机,现场的内容就是你在游戏中看到的内容。

这是我的GameViewController:

class GameViewController: UIViewController, ADBannerViewDelegate {

    var adBannerView: ADBannerView!

    func loadAds() {

        adBannerView = ADBannerView(frame: view.frame)
        adBannerView.delegate = self
        adBannerView.hidden = true
        view.addSubview(adBannerView)
    }

    override func viewDidLoad() {

        super.viewDidLoad()
        if let scene = MainMenuScene.unarchiveFromFile("MainMenuScene") as? MainMenuScene {

            let skView = self.view as! SKView
            skView.showsFPS = true
            skView.showsNodeCount = false
            skView.showsDrawCount = false
            skView.ignoresSiblingOrder = true

            scene.scaleMode = .AspectFill
            skView.presentScene(scene)

            loadAds()
        }
    }

    override func shouldAutorotate() -> Bool {
        return true
    }

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask {
        return [UIInterfaceOrientationMask.LandscapeLeft, UIInterfaceOrientationMask.LandscapeRight]
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    override func prefersStatusBarHidden() -> Bool {
        return true
    }

    func bannerViewWillLoadAd(banner: ADBannerView!) {
        print("Ad about to load")
    }

    func bannerViewDidLoadAd(banner: ADBannerView!) {

        adBannerView.hidden = false
        print("Displaying the Ad")
    }

    func bannerViewActionDidFinish(banner: ADBannerView!) {
        print("Close the Ad")
    }

    func bannerViewActionShouldBegin(banner: ADBannerView!, willLeaveApplication willLeave: Bool) -> Bool {

        print("Leave the application to the Ad")
        return true
    }

    func bannerView(banner: ADBannerView!, didFailToReceiveAdWithError error: NSError!) {

        adBannerView.hidden = true
        print("Ad is not available")
    }
}

对于广告我已经尝试过所有的scaleModes和让广告正常工作的人(虽然不是很完美)但是在iPhone和iPad上都是.Fill但是我的精灵会按照我不喜欢的方式调整大小39; t喜欢。我使用场景编辑器,因此在代码中更改图像或精灵的位置似乎不是最有效的方法。

1 个答案:

答案 0 :(得分:1)

根据您设置对象约束的方式,您可以尝试设置

SKSceneScaleMode

.ResizeFill

然后添加以下变量

var screenSize = UIScreen.mainscreen().bounds
var screenWidth = screenSize.width
var screenHeight = screenSize.height

当添加节点和其他对象时,根据screenWidth和screenSize

定位和调整它们的大小