2014-09-05 75 views
1

我一直在玩SpriteKit,但注意到它在图像中加载的方式有些奇怪的行为,我试图编写代码来削减一张spritesheet并使用[SKTexture textureWithRect]显示单帧,但图像总是显得太小。如何防止使用SpriteKit进行图像缩放?

从做一些更多的测试,我发现刚编写这些代码:

-(id)initWithSize:(CGSize)size {  
    if (self = [super initWithSize:size]) { 
     SKSpriteNode *imageNode = [SKSpriteNode spriteNodeWithImageNamed:@"tree2-final.png"]; 
     imageNode.position = CGPointMake(400, 400); 
     [self addChild:imageNode]; 
    } 
    return self; 
} 

在SKScene的一个子类加载与我的形象的窗口,但它太小了,下面是问题的一个屏幕截图。它显示运行我的代码的窗口,其中显示图像以及在预览中显示全尺寸的图像。

我猜这与视网膜图像有关,在这种情况下是否存在一种简单的方法来关闭它并使其以原始尺寸显示图像?

enter image description here

+0

你的场景的大小和tree2-final.png的大小是多少?如果您使用预览来查看图像文件,它不一定以真实尺寸显示它。它通常显示它大于实际大小。 – 2014-09-05 23:45:46

+0

顺便说一句,SpriteKit有点像图像加载。但是,如果您有视网膜图像,则需要在文件名中使用“@ 2x”,以便在视网膜显示屏上正确显示。如果你没有“@ 2x”,它实际上会缩放图像。 – 2014-09-05 23:49:55

+0

图像大小为256x256,场景大小为1024x768(我将它构建为Mac应用程序而非iOS)。 – pogo 2014-09-06 00:04:01

回答

1

当使用在IOS的spriteWithImageNamed方法创建SKSpriteNode,每英寸的图像的点数(DPI)被忽略。对于Mac OS X游戏,图像的DPI会影响精灵的大小。如果图像的DPI大于72,则精灵的大小将按比例变小。例如,如果您的DPI是144,您的精灵将是图像大小的宽度和高度的1/2。