相关疑难解决方法(0)

无法打开粒子SKS文件

我一直在使用SpriteKit与Xcode 6 GM进行游戏,出于某种原因,我的.SKS粒子文件现在正在崩溃Xcode,这使得它们无法打开.我还注意到,当使用NSKeyedUnarchiver未实现时,崩溃Xcode的文件也会崩溃我的应用程序.所以我假设在崩溃的情况下,我的一些SKS文件已经腐败了.对于我所有损坏的SKS粒子文件,除了重新开始之外,还有什么解决方案吗?我可以通过外部编辑器以某种方式手动修改SKS文件并解决问题吗?还有我可以采取的任何步骤,以确保我的SKS文件不会再次损坏(即Xcode 6中有一些我应该知道导致损坏的SKS文件的错误).

编辑:看来Xcode将这些文件视为场景,而不是导致崩溃的粒子文件.因此,由于某种原因,Xcode 6 GM Sprite Kit Editor无法正确保留文件格式,导致粒子文件被保存为场景文件,从而导致文件损坏.

sprite-kit swift xcode6 ios8

19
推荐指数
1
解决办法
3980
查看次数

在OS X上全屏模式下的Sprite Kit严重FPS问题

我正在制作一个相当复杂的精灵套装游戏.我最近添加了对OS X的支持.我总是得到60 fps,无论在调整窗口大小时我的游戏是如何缩放的(即使调整大小到最大屏幕空间).但是,当我让我的应用程序进入"全屏"时,fps下降到30-40 fps并保持这种状态?但是,如果我在启用全屏时使用鼠标光标并显示菜单栏,则fps会恢复到60 fps!

你甚至可以使用默认模板在Xcode中为mac制作一个sprite kit游戏来测试这个bug.这是我拍摄的Mac默认游戏模板的屏幕截图.

我建议您自己尝试一下,如果您使用Apple的OS X默认精灵工具包模板,您甚至不必编写任何代码.

最大窗口(无FPS问题:59-60 FPS) 在此输入图像描述

全屏模式(FPS降至30-40 FPS) 在此输入图像描述

全屏模式鼠标在顶部显示菜单栏(令人惊讶的是,没有FPS问题:59-60 FPS) 在此输入图像描述

任何人都知道可能导致这个问题的原因.如果这意味着用户将失去性能,我不想以全屏模式发布我的应用程序.你会认为全屏模式可以更好地优化绘图,但显然它恰恰相反.我在优胜美地上跑步.

macos frame-rate sprite-kit

9
推荐指数
1
解决办法
1364
查看次数

翻转的x-scale中断碰撞处理(SpriteKit 7.1)

我使用SKNode的xScale属性来水平翻转我的精灵.现在,在将iOS更新到版本7.1之后,水平翻转会导致我的对象沉入地下.(见下面的动画).只有xScale属性才会出现此问题.垂直翻转工作正常.

// Init
{
    SKSpriteNode* ground = [SKSpriteNode spriteNodeWithColor:[UIColor blackColor] size:CGSizeMake(winSize.width, 150)];
    ground.position = CGPointMake(winSize.width/2, ground.size.height/2);
    ground.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:ground.size center:CGPointZero];
    ground.physicsBody.dynamic = NO;
    ground.physicsBody.categoryBitMask = 0x01;
    ground.physicsBody.collisionBitMask = 0x02;
    ground.physicsBody.contactTestBitMask = 0x02;
    [self.world addChild:ground];

    SKSpriteNode* turtle = [SKSpriteNode spriteNodeWithImageNamed:@"turtle.png"];
    turtle.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:turtle.size.width/2];
    turtle.physicsBody.categoryBitMask = 0x02;
    turtle.physicsBody.collisionBitMask = 0x01;
    turtle.physicsBody.contactTestBitMask = 0x01;
    turtle.position = CGPointMake(winSize.width/2, winSize.height/2);
    [self.world addChild:turtle];
    self.turtle = turtle;
}

// Somewhere else
{
    self.turtle.xScale *= -1;
}
Run Code Online (Sandbox Code Playgroud)

x尺度翻转问题

xscale sprite-kit skphysicsbody ios7.1

8
推荐指数
2
解决办法
1959
查看次数

enumerateBodiesAlongRayStart将"机会"打印到Xcode 6中的控制台

我正在使用enumerateBodiesAlongRayStart,这个方法不断地在我的控制台上打印"Chance"这个词.有没有办法压制这个?这是怎么回事?

self.gameScene.physicsWorld.enumerateBodiesAlongRayStart(self.rayStart, end: self.rayEnd, usingBlock: {
    body, point, normal, stop in

})
Run Code Online (Sandbox Code Playgroud)

loops ios sprite-kit swift

8
推荐指数
1
解决办法
557
查看次数

由于iOS9升级SpriteKit图像不再正确显示

我刚刚更新到iOS 9,却发现我的应用程序中的多个图像不再显示.由于某种原因,所有SpriteKit文本都是黄色的(以前是白色的).

有问题的图像是2D精灵,用精灵套件渲染,但在哪个显示和哪个不显示之间似乎没有很大的一致性.当然,没有背景显示,有些图像显示为白色框(但不是红色X).

其他精灵是颠倒的,或在Y中翻转,就像坐标系已经颠倒一样.并且似乎不再显示粒子效果.

我应该在不久前尝试过测试版,因为这会破坏我的实时应用程序(我现在已经删除了).但有没有其他人经历过类似的事情?或者可能知道什么是错的?在我看来主要是一个SpriteKit问题,然而,纹理地图集的所有精灵似乎都运行良好.

更新:

我意识到这是我的所有精灵都不在纹理地图集中.我在这里找到了一个论坛帖子:https://forums.developer.apple.com/thread/13358,说iOS9要么代码中的每个资产名称都需要".png"扩展名,要么你可以删除并重新添加所有资产目录中的资产.难以置信的!

这篇文章遇到了类似的问题,显然解决方案是将所有地图集添加到XCAssets,然后将目标设置为最新的iOS.但是你失去了与iOS8的向后兼容性.

upgrade objective-c sprite-kit sktexture ios9

6
推荐指数
1
解决办法
665
查看次数

主要Bug,在XCAssets文件夹中创建的Sprite Atlas不支持批量渲染

我开始在XCAssets文件夹中使用新的Sprite Atlas,而不是在项目文件夹中使用我的地图集.但是我注意到,当我这样做时,我的节点不再被批量渲染,导致大量低效的绘制调用.这完全违背了使用地图册的目的!

要清楚这是我用来获取地图集的代码.

let atlas = SKTextureAtlas(named: "Sprites")
Run Code Online (Sandbox Code Playgroud)

"Sprites"是在XCAssets文件夹中创建的Sprite Atlas.

有没有人有解决方法或我在项目文件夹中制作Sprite Kit Atlases.

我正在使用Xcode 7.2 beta.

我想使用新的Sprite Kit Atlases的原因是因为这个问题.

macos ios sprite-kit xcode7

5
推荐指数
1
解决办法
604
查看次数