ios - 背景图片大小 Sprite Kit Game

标签 ios iphone sprite-kit

我刚刚开始了一个新的 Sprite Kit 项目来学习如何使用它。我观看并阅读了很多教程,但没有教程可以解决我的问题。

我想为我的 iPhone 5S 创建一个应用程序。所以屏幕尺寸为 1136x640。我为我的应用程序创建了一个 1136x640 的背景图像。但是当我将图像添加到我的应用程序时,它会变大! iOS 模拟器只显示图像的中间部分。

谁能告诉我必须使用什么屏幕尺寸以及为什么?

非常感谢!

这是我从教程中复制的代码。 代码在myScene.m文件中的initWithSize方法

        SKSpriteNode *background = [SKSpriteNode spriteNodeWithImageNamed:@"myBackground"];
    background.position = CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame));

    [self addChild:background];

编辑:

我在谷歌上搜索并找到了这个:

viewDidLoad 方法必须更改为“viewWillLayoutSubviews”。

这是这个方法:

    - (void)viewWillLayoutSubviews
    {
    [super viewWillLayoutSubviews];

    // Configure the view.
    SKView * skView = (SKView *)self.view;
    skView.showsFPS = YES;
    skView.showsNodeCount = YES;

    // Create and configure the scene.
    SKScene * scene = [MyScene sceneWithSize:CGSizeMake(skView.bounds.size.width*2,skView.bounds.size.height*2)];
    scene.scaleMode = SKSceneScaleModeAspectFill;

    // Present the scene.
    [skView presentScene:scene];
}

起初 scene = MySceneWithSize 行是:

SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];

但那时它只是 iPhone 5 屏幕尺寸 (568x320) 的一半。所以我不得不把尺寸扩大一倍。有人知道为什么吗?

最佳答案

对您当前问题的简短回答:

background.size = self.frame.size;

长答案,以及关于其他方法的讨论...

场景以逻辑单位工作,而不是物理像素(如其他帖子中所述)。

1 个逻辑单元在较旧的套件上通常为 1 个像素,在较新的套件/iPad 上通常为 2 个像素。 这可能是 5 年内的 4 个像素。

在逻辑单位中工作可以保护您免受将来大小变化的影响,并且应该对程序员有所帮助——尽管这常常会让新手感到困惑。

让图像填充当前场景的最简单方法是以“逻辑单位”设置其大小,无论其原始大小如何。

这比使用 SKActions 更好(因为用户可能最终会看到它们,并且在操作完成之前不能依赖任何基于节点维度的计算),并且它比缩放更好,因为缩放需要你知道原始图像尺寸。

您可以通过 size 属性来实现,如果您真的想制作动画,也可以通过 action 来实现。

在现场简直....

-(void)didMoveToView:(SKView *)view
{
    [super didMoveToView:view];

    SKSpriteNode* background = [SKSpriteNode spriteNodeWithImageNamed:@"myBackground"];
    background.size = self.frame.size;
    background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
    [self addChild:background];
} 

或者,如果您的图像在更高的分辨率下效果很好,您可以将图像重命名为 myBackground@2x.png,将其添加到您的项目中,您可能根本不需要调整大小,但您对于较低分辨率的设备,您还需要将其缩小 50%,并将其另存为 myBackground.png。

我总是将导入图像的大小设置为我想要的逻辑单位(或屏幕尺寸的百分比)以保持理智。

关于ios - 背景图片大小 Sprite Kit Game,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19471761/

相关文章:

ios - 在 Xamarin iOS 中定义文本字体大小的模式

ios - 将自定义输入 View 设置为全局所有文本字段的最简单方法

iphone - 获取某个CGPoint下的 View 列表

ios - 如何在支持 iOS 6 的情况下获得类似于 iOS 7 主屏幕的视差运动偏移?

iphone - 如何判断 Xcode 是否在脚本中执行 "build and archive"?

objective-c - 如何让 UITextField 接受焦点而不显示键盘?

iphone - Objective-C 枚举最大(按位)限制(iPhone)

ios - 如何在 SpriteKit 上创建 UITextField

ios - physicsBody = SKPhysicsBody(edgeLoopF​​romRect : view. 帧)

ios - 如何获取 SKAction(名称 :) to work reliably?