- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在一个简单但快节奏的 SpriteKit 游戏中遇到了问题,但我已经将我的代码缩减为一个弹跳球,但问题的程度仍然较小:
override func didMove(to view: SKView) {
super.didMove(to: view)
physicsWorld.contactDelegate = self
physicsWorld.speed = 1
physicsWorld.gravity = CGVector(dx: 0.0, dy: 0.0)
let borderBody = SKPhysicsBody(edgeLoopFrom: self.frame)
borderBody.friction = 0
self.physicsBody = borderBody
borderBody.contactTestBitMask = BallCategory
addBall()
}
func addBall() {
let size = CGSize(width: 20, height: 20)
let position = CGPoint(x: frame.width / 2, y: 50)
let texture = SKTexture(image: #imageLiteral(resourceName: "whiteCircle"))
let ball = SKSpriteNode(texture: texture, size: size)
ball.position = position
ball.physicsBody = SKPhysicsBody(circleOfRadius: size.width / 2)
ball.fillColor = .white
ball.lineWidth = 0
addStandardProperties(node: ball, name: "ball", z: 5, contactTest: 0, category: BallCategory)
ball.physicsBody?.isDynamic = true
addChild(ball)
launchBall()
}
func addStandardProperties(node: SKNode, name: String, z: CGFloat, contactTest: UInt32, category: UInt32) {
node.name = name
node.zPosition = z
node.physicsBody?.isDynamic = false
node.physicsBody?.affectedByGravity = false
node.physicsBody?.mass = 0
node.physicsBody?.restitution = 1
node.physicsBody?.friction = 0
node.physicsBody?.linearDamping = 0
node.physicsBody?.angularDamping = 0
node.physicsBody?.angularVelocity = 0
node.physicsBody?.contactTestBitMask = contactTest
node.physicsBody?.categoryBitMask = category
}
func launchBall() {
let ball = childNode(withName: "ball")!
ball.physicsBody?.velocity = CGVector(dx: 0, dy: 500)
}
此代码导致球 (SKSpriteNode) 上下弹跳。当我运行这个程序时,我的 iPhone 6s 的 CPU 使用率从大约 10% 开始,然后在大约 30-60 秒后增加到大约 25-30%(不知道为什么会增加)。在所有这些过程中,帧速率保持非常接近 60 FPS,通常不低于 58 FPS(当我运行完整游戏时也是如此)。
几乎每次弹出警报(例如,短信、登录 Game Center 等)时,都会出现延迟,并且在我运行完整游戏时会随机出现。
我还尝试删除并重新运行应用程序、清理项目、删除派生数据并在 Release模式下运行。这些都不是永久有效的。
我应该放弃 SpriteKit 并尝试另一个框架吗?如果是这样,哪个? Cocos2D?
感谢任何帮助。
最佳答案
这是 Apple 将系统调用的优先级置于几乎所有其他方面的结果。
当系统想要知道某事、检查某事或以其他方式做它的事情时,它会受到其他一切的支配。
没有其他引擎能够帮助解决这个问题,没有办法通过代码使系统的持续事件静音。
您可以通过开启飞行模式并关闭 WIFI 和蓝牙来获得轻微的改善。该系统似乎有点意识到它处于更安静的模式并且做的更少,因为它没有 4G 或其他可以与之通信的连接。
此外,iOS 11 中的防手掌误触功能发生了一些相当大的变化,这对第一轮 iPad Pro 型号和创意软件造成了严重破坏,造成了对所有触摸输入的多秒拒绝。当这种事情可以通过 GM 处理时,您可以非常确定他们正在避开其他困惑情况。
以下是关于 iOS 11 性能的一些投诉:https://www.macrumors.com/2017/09/25/ios-11-app-slowdowns-performance-issues/
关于swift - 快节奏的 SpriteKit 游戏具有不规则的 CPU 事件,并且尽管帧速率保持在高水平,但仍会出现抖动/滞后 - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47299191/
negExpression : (NOT^)* primitiveElement ; 是我的规矩。我现在有这个代码: !!(1==1) 我希望我最终会得到这棵树: NOT | NOT
我遇到以下问题,我正在创建一个作为预算副本的表单,但这种类型的预算不包含增值税%,并且商品不会通过会计。 问题如下我创建了一个名为budget.table的模型如下: class TableEleme
我对 Java 相当陌生,但对一般编程不太熟悉。我在 Windows Vista 上使用 Java 1.7.0_07。我正在尝试弄清楚如何使 Swing Timer 定期计时。 我注意到,即使我设置了
我有一个静态站点,它突然显示不规则的标题。这是一个包含大量 JavaScript 的单一页面,包括页面顶部的表格选择。该网站六个月前运行良好。现在,我在 12 个不同的导航选项卡中的一半上看到无法解释
在我参加的 CS 类(class)中,有一个不规则语言的例子: {a^nb^n | n >= 0} 我可以理解它是不规则的,因为没有有限状态自动机/机器可以编写来验证和接受此输入,因为它缺少内存组件。
给定以下高频但稀疏的时间序列: #Sparse Timeseries dti1 = pd.date_range(start=datetime(2015,8,1,9,0,0),periods=10,fr
我有 X、Y、Z 格式的数据,其中所有数据都是一维数组,Z 是坐标 (X,Y) 处的测量幅度。我想将此数据显示为等高线或“imshow”图,其中等高线/颜色代表 Z 值(幅度)。 用于测量和 X 和
这是 Stackoverflow 上的一个递归问题,但给出的解决方案 here仍然不完美。对我来说,屈服仍然是 python 中最复杂的东西之一,所以我不知道如何自己修复它。 当给定函数的任何列表中的
我使用 PHP 5.3.3 在 RHEL 6 服务器上部署了一个 symfony 1.4 项目。我不定期地在 php 错误日志中收到条目,提示找不到 sfProjectConfiguration 并且
我是一名优秀的程序员,十分优秀!