ios - 使用场景的shouldRasterize属性

标签 ios swift sprite-kit rasterizing

我的大多数游戏关卡都比屏幕尺寸大,因此摄像机会跟随玩家在关卡周围移动。该关卡中充满了多种物体,例如平台和地雷。从整体上看,这些平台和地雷不会在关卡中移动(不会在 update 方法中执行任何操作或使用 SKActions),而是在屏幕上它们似乎在移动,因为摄像机正在跟随玩家。据我所知,将场景的 shouldRasterize 属性设置为 true 应该可以提高不移动节点的性能。所以我的问题是场景是否将平台和地雷视为移动或静止/将 shouldRasterize 属性设置为 true 在这种情况下可以帮助我解决问题吗?

最佳答案

正如您所指出的,shouldRasterize 确实将节点(以及每个后代)的渲染保存在内存中。因此,如果下一帧没有任何变化,则使用缓存的渲染。

你说过你的场景没有什么真正改变。你确定吗?连玩家也不行?如果是这样,那么 shouldRasterize = true 应该会使渲染速度更快。否则,即使单个可见节点的外观随时间发生变化,也不应将 shouldRasterize 设置为 true

测试一下

在这种情况下测试最佳方法非常容易。只需在两种模式下运行游戏(shouldRasterize = false,然后 shouldRasterize = true)并检查帧率何时更高。

最终考虑因素

您为什么考虑这种优化?你的游戏慢吗?如果您的游戏只是一个场景滚动而没有任何 Action 并且速度很慢,那么您可能应该在应用任何优化之前修复一些问题。

关于ios - 使用场景的shouldRasterize属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38127750/

相关文章:

ios - SwiftUI 导航链接后退按钮在预览中有效,但在模拟器或设备中无效

swift - 生成相同类型类的 SequenceType 数组的类型是什么

ios - SKCropNode 获取裁剪部分作为 SKSpriteNode

swift - Sprite 出现在节点数中但不可见

iphone - 如何使 UITableView 上的 SwipeGestureRecognizer 响应更快?

iOSOpenDev Theos - 如何运行

ios - 捕获正在运行的视频的屏幕截图

ios - 如何在同一函数中为 2 个 Alamofire 请求只有 1 个完成处理程序

ios - 如何在 Swift 中创建一个使用 "self"的全局变量

ios - NSURLConnection 使异步调用 aSync 并处理自签名证书