Это происходит потому, что установлен SKShapeNode fillColor
. Очевидно, что когда установлены либо fillColor
, либо strokeColor
, для каждого из них требуется дополнительный узел и дополнительный проход отрисовки. По умолчанию уже установлен strokeColor (один узел, один проход отрисовки), а поскольку fillColor
установлен дополнительно, для рендеринга формы требуются два узла (и два прохода отрисовки).
SKShapeNode
во многих случаях не является эффективным решением по очевидным причинам. Для одного SKShapeNode
требуется хотя бы один вызов отрисовки. Есть несколько интересных сообщений, связанных с этой темой, например, этот one или этот один.
Но все же, ИМО, следует избегать SKShapeNode
, если это не единственное решение. Просто из соображений производительности. И в вашем случае, если вы, например, хотите иметь много разных видов мячей, эффективным решением будет использование атласа текстур и SKSpriteNode
для представления этих текстур. Таким образом, вы можете визуализировать столько шаров, сколько захотите, за один проход отрисовки.
Обратите внимание, что проходы отрисовки гораздо важнее, чем количество узлов, когда речь идет о производительности. SpriteKit может отображать сотни узлов со скоростью 60 кадров в секунду, если количество проходов отрисовки, необходимых для визуализации сцены, невелико.
person
Whirlwind
schedule
24.07.2015