在一个UIVew中使用多个CALayer获得性能

时间:2011-02-13 10:17:23

标签: iphone core-animation quartz-graphics

我正在编写一个简单的2D游戏,目前在每次更新时为多个精灵做了一些自定义绘图 - 即我有游戏视图,委托所有精灵进行石英渲染(点/线)基于每次更新。

我的表现很好,大约有50个活动对象被渲染,但现在事情开始变慢,所以我正在寻求优化。为此,我决定将我的精灵预渲染到CALayer,然后将其添加到游戏视图中。

我的第一个想法是给每个Sprite实例一个CALayer,它被添加到GameView的view.layer作为子层。这意味着我使用单个UIView,它有多个CALayers - 每个游戏精灵一个。

如果我决定为每个游戏精灵使用UIView,那么会有微不足道的性能损失吗?

2 个答案:

答案 0 :(得分:1)

据我所知,UIView是围绕CALayer的非常轻量级的包装器,所以性能损失不应该太大。但我认为精灵可以更好地用CALayer而不是UIView的实例来表示。

答案 1 :(得分:1)

UIViews是响应者链的一部分,会增加额外的开销。我从UIViews开始寻找精灵,发现手势变得迟钝。 我建议坚持使用CALayers