SKShapeNode объект рисует форму, образованную путем Core Graphics.
Графический путь представляет собой набор прямых линий и кривых, которые могут определять открытые или закрытые подпуты. Вы можете указать отдельное поведение рендеринга для заполненной и поглаженной части пути. Каждая часть может быть визуализирована с использованием сплошного цвета или текстуры; если вам нужно сделать более сложные эффекты, вы также можете использовать пользовательский шейдер .
Узлы формы полезны для контента, который не может быть легко разложен в простые текстурированные спрайты. Узлы формы также очень полезны для построения и отображения отладочной информации в верхней части вашей игры. . Однако класс SKSpriteNode предлагает более высокую производительность , чем этот класс, поэтому экономно использовать узлы формы.
Создание узла формы из пути показывает пример создания узла формы . В примере создается круг с синим внутренним пространством и белым контуром . Путь создается и прикрепляется к свойству пути элемента формы.
Вы можете найти более подробную информацию в компании Apple чиновника guide
Это фактические доступные Инициализационные методы из источников:
/* Create a Shape Node using a CGPathRef, optionally centered at the Node's origin. */
@available(iOS 8.0, *)
public convenience init(path: CGPath)
@available(iOS 8.0, *)
public convenience init(path: CGPath, centered: Bool)
/* Create a Shape Node representing a Rect. */
@available(iOS 8.0, *)
public convenience init(rect: CGRect)
/* Create a Shape Node representing a rect centered at the Node's origin. */
@available(iOS 8.0, *)
public convenience init(rectOfSize size: CGSize)
/* Create a Shape Node representing a rounded rect with a corner radius */
@available(iOS 8.0, *)
public convenience init(rect: CGRect, cornerRadius: CGFloat)
/* Create a Shape Node representing a rounded rect with a corner radius centered at the Node's origin. */
@available(iOS 8.0, *)
public convenience init(rectOfSize size: CGSize, cornerRadius: CGFloat)
/* Create a Shape Node representing an circle centered at the Node's origin. */
@available(iOS 8.0, *)
public convenience init(circleOfRadius radius: CGFloat)
/* Create a Shape Node representing an Ellipse inscribed within a Rect */
@available(iOS 8.0, *)
public convenience init(ellipseInRect rect: CGRect)
/* Create a Shape Node representing an Ellipse inscribed within a Rect centered at the Node's origin. */
@available(iOS 8.0, *)
public convenience init(ellipseOfSize size: CGSize)
/* Create a Shape Node representing an a series of Points interpreted as line segments */
@available(iOS 8.0, *)
public convenience init(points: UnsafeMutablePointer<CGPoint>, count numPoints: Int)
/* Create a Shape Node representing a smoothed spline that passes through a series of Points */
@available(iOS 8.0, *)
public convenience init(splinePoints points: UnsafeMutablePointer<CGPoint>, count numPoints: Int)
Как вы можете видеть, вы можете создавать неполноэкранные только квадраты, но и нерегулярный многоугольник, используя, например, обычай CGPath
.
Типичный пример этого ниже:
let shape = SKShapeNode()
shape.path = UIBezierPath(roundedRect: CGRect(x: -128, y: -128, width: 256, height: 256), cornerRadius: 64).CGPath
shape.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
shape.fillColor = UIColor.redColor()
shape.strokeColor = UIColor.blueColor()
shape.lineWidth = 10
addChild(shape)
P.S.: В процессе разработки могут возникнуть некоторые ошибки в памяти, вызванные SKShapeNode
, но ничего, что помешало бы вам протестировать, создать и опубликовать игру, многие игры на рынке используют без проблем SKShapeNode
, вы должны просто быть более осторожными в кода, не злоупотребляя им.
Где источник? Ссылка? –
Какой источник?Откройте редактор сценариев xcode spritekit и посмотрите себя – Knight0fDragon
Я неправильно понял. Я думал, когда вы сказали «Источник:», вы цитировали кого-то. Вы говорили, что источник - это редактор сцены, и вы правы –