草庐IT

Spritekit

全部标签

ios - SpriteKit 纹理图集与图像 xcassets

我正在制作游戏,我注意到在某些场景中,我的FPS一直在55-60FPS区域下降(使用纹理图集)。这让我抓狂,所以我决定将我所有的Assets放到Images.xcassets文件夹中,瞧,稳定的60FPS。我认为这是侥幸,或者我做错了什么,所以我决定开始一个新项目并执行一些基准测试......Apple的文档说使用纹理图集将提高应用程序性能。基本上,允许您的应用程序利用批量渲染。然而……测试(https://github.com/JRam13/JSGlitch):-(void)runTest{SKAction*spawn=[SKActionrunBlock:^{for(inti=0;i

ios - 可与 SpriteKit 的 labelNodeWithFontNamed 方法一起使用的字体列表

如何获取可与SpriteKit的labelNodeWithFontNamed方法一起使用的字体名称列表?有一个SKLabelNode方法,我可以在其中指定字体名称,但我想知道支持哪些字体以及它们的名称是什么。例子:[SKLabelNodelabelNodeWithFontNamed:@"Chalkduster"]; 最佳答案 引用iosfonts.com它们向您展示了实际字体的外观、描述性名称和代号以及添加了特定字体的iOS版本。仅使用每种字体的代号,如AmericanTypewriter-CondensedLight。

ios - 在 SpriteKit 中处理不同的 iOS 设备分辨率

我在Xcode6、iOS8beta5中玩弄SpriteKit。在iPhone4S模拟器上一切都已布置并完美运行,但是当切换到5S时,屏幕底部的元素被剪切离开。据我了解,iPhone屏幕的左下角应该是CGPoint(0,0)但是在通过将坐标打印到控制台来检查位置后,我可以点击的左角最低点在附近(5,44)。是不是我的场景设置有问题导致了这种情况?没有对GameViewController文件进行任何更改,即使在我剥离GameScene文件后问题仍然存在。至少有人能用这个给我指明正确的方向吗? 最佳答案 添加以下代码将解决您的问题(代码

xcode - SpriteKit 的更新函数 : time vs. framerate

一般来说,我是编程和Spritekit的新手,有兴趣探索毫秒和帧率之间的关系,以及更新函数如何用作两者之间的中介。帧率与毫秒从本质上讲,帧率和时间之间的主要区别在于时间始终是一致的,而帧率则不是(由于密集的图形程序,它可能会下降)。但是,通常在SKScene的更新事件(每帧调用一次)期间检查和设置时间,所以当您不知道一秒钟内将有多少帧时,我试图弄清楚如何正确计算时间.示例我目前正在查看太空射击游戏的更新事件,其中更新函数负责计算生成另一个外星人之前的时间间隔。您可以在此处查看完整代码:http://www.globalnerdy.com/2014/08/10/a-simple-shoo

ios - 为 SpriteKit 转换 UITapGestureRecognizer 的触摸位置 - Swift

我用SceneKit场景创建了一个游戏到UIViewController中。我像这样实现了一个UITapGestureRecognizer://TAPGESTURElettapGesture=UITapGestureRecognizer(target:self,action:"handleTap:")sceneView.overlaySKScene?.view!.addGestureRecognizer(tapGesture)handleTap函数:funchandleTap(sender:UIGestureRecognizer){ifsender.state==UIGestureRe

swift - 在特定场景中构建 SpriteKit/GameKit 排行榜

我是Swift的新手,在我的游戏中实现排行榜时遇到了一些问题。我刚刚看了一个教程:'GameCenterLeaderboards!(Xcode中的Swift2)',其中GameCenter信息全部通过应用程序的一个View。在我的游戏中,我希望用户能够玩游戏,然后只有当他们在特定的SKScene上时,他们才能访问GameCenter。因此,例如,在GameOverScene上,他们将进行用户身份验证,并且还能够上传他们的高分。我想我还遗漏了GameViewController(所有教程逻辑所在的位置)与我制作的许多场景之一之间的一些差异。这是我的代码,我在其中尝试在GameOverSc

ios - 在 SpriteKit 中预加载纹理

我做了一些研究,但似乎找不到任何内容可以清楚地解释如何在动画中预加载单个纹理和纹理。我目前正在使用Assets.xcassets中的Atlas对相关动画图像进行分组。将我的图片放在Atlas中是否意味着它们已预加载?至于单个图像,在GameScene之前声明纹理是否有意义,如下所示:letlaserImage=SKTexture(imageNamed:"Sprites/laser.jpg")然后(例如)在我的一个SKSpriteNode子类中,我可以只传递laserImage吗?我最终想知道是否有明确定义的方法来解决这个问题,或者我是否应该在GameScene之前将每个纹理存储为常量。

ios - SpriteKit playSoundFileNamed 在 iOS 8.3 上崩溃

我在应用程序的崩溃日志中看到少量SpriteKitplaySoundFileNamed崩溃。崩溃发生在iOS8.3上。0CoreFoundation__exceptionPreprocess1libobjc.A.dylibobjc_exception_throw2CoreFoundation-[NSExceptioninitWithCoder:]3SpriteKit+[SKPlaySoundplaySoundFileNamed:atPosition:waitForCompletion:]4SpriteKit+[SKAction(SKActions)playSoundFileNamed:

ios - SpriteKit : run action while scene is paused

我有一个按钮可以在我的代码中暂停游戏。我想要的是使用该按钮暂停游戏会出现一条消息,显示“已暂停”。但是,由于场景已暂停,因此不会出现该消息。我现在拥有的是一个SKLabelNode,开始时alpha为0.0,当用户暂停游戏时,它会通过fadeInWithDuration()更改为1.0。然后,当用户再次按下按钮时,它会通过fadeOutWithDuration()变回0.0。问题是当场景暂停时,带有fadeInWithDuration()的SKAction不会运行。我怎样才能做到这一点? 最佳答案 Apple在“DemoBots”中

swift - 使用 Swift 在 Spritekit 中暂停 SKAction

我有以下代码来移动SKSpriteNode。letmoveDown=SKAction.moveBy(CGVectorMake(0,-120),duration:1)letmoveUp=SKAction.moveBy(CGVectorMake(0,+120),duration:1)letmoveSequence=SKAction.sequence([moveDown,moveUp])square.runAction(SKAction.repeatActionForever(moveSequence))这会永远上下移动SKSpriteNode。有什么方法可以暂停此SKAction?以便SK