【发布时间】:2017-06-09 23:15:06
【问题描述】:
我正在构建一个应用,它提供类似于 Photoshop 或 illustrator 的可编辑画布(目前使用 SpriteKit)。正如您想象的那样,在显示大量节点(1000 多个)时,我遇到了一些性能问题。
目前,我有一个带有SKShapeNodes 的SKScene。他们目前没有任何图像,只是用颜色填充。它们的形状路径 (CGPaths) 从圆形到贝塞尔路径不等。每个形状当前都有一个SKPhysicsBody,其路径与用于检测点击的渲染形状相同。
性能问题可以通过以下方式描述:
- 添加 1000 个节点(圆)时速度变慢,每个节点使用大约 0.1mb 的内存
- 移动 1000 个节点(圆)时的缓慢
- 从 1000 个节点(圆)生成纹理时速度较慢
禁用 PhysicsBodies 不会显着提高性能,但会提高 CPU 负载(从恒定的 60% 跃升至 1% 左右)
大多数用户不会使用 1000 个节点,但我想实现最佳解决方案。
我想要的是两个有两层:
- 一个 render 层,我希望能够在其上使用笔触和填充来渲染
CGPaths(最好选择笔触端盖样式以及其他小东西) - 一个 interaction 层,我希望在该层上能够检测到
CGPaths 内的点击,并用颜色描边 CGPath 以指示突出显示。
我怎样才能完成这个或类似的解决方案来提高我可以渲染 1000 个圆圈的速度?
【问题讨论】:
-
“我正在使用 SpriteKit 构建类似 Photoshop 或 illustrator 的东西”嗯!?
-
@ElTomato 这并不像听起来那么疯狂! SpriteKit 作为许多模拟可编辑画布行为的好工具。正如我所描述的,显然它有局限性。
-
我对此没有意见。我以为您想说您正在使用 Photoshop 和 Illustrator 构建游戏。和平。
-
嘿,如果您不介意,请点赞我接受的回答:) 谢谢!
标签: ios objective-c swift sprite-kit core-graphics